diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d542b526c6..f0821545b5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -163,7 +163,7 @@ jobs: formatting: needs: build runs-on: ubuntu-latest - timeout-minutes: 60 + timeout-minutes: 120 steps: - uses: actions/checkout@v7 with: diff --git a/common/config/rush/pnpm-config.json b/common/config/rush/pnpm-config.json index 244e0dba60..1512cba845 100644 --- a/common/config/rush/pnpm-config.json +++ b/common/config/rush/pnpm-config.json @@ -246,7 +246,6 @@ // huly.utils packages: // "@hcengineering/platform-rig": "file:../../../huly.utils/packages/platform-rig", - // "@hcengineering/ui-test": "file:../../../huly.utils/packages/ui-test" // huly.communication packages // "@hcengineering/communication-types": "file:../../../communication/packages/types", diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 3fd9e68583..eef7bfbfef 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -631,20 +631,20 @@ importers: specifier: ^16.4.5 version: 16.6.1 electron-context-menu: - specifier: ^4.0.4 - version: 4.1.1 + specifier: ^4.1.2 + version: 4.1.2 electron-log: - specifier: ^5.1.7 - version: 5.4.3 + specifier: ^5.4.4 + version: 5.4.4 electron-squirrel-startup: - specifier: ~1.0.0 + specifier: ~1.0.1 version: 1.0.1 electron-store: specifier: ^8.2.0 version: 8.2.0 electron-updater: - specifier: ^6.3.4 - version: 6.6.2 + specifier: ^6.8.9 + version: 6.8.9 electron-windows-badge: specifier: ^1.1.0 version: 1.1.0 @@ -662,11 +662,11 @@ importers: specifier: workspace:^0.7.21 version: link:../foundations/utils/packages/platform-rig '@testing-library/jest-dom': - specifier: ^6.6.3 + specifier: 6.9.1 version: 6.9.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -674,89 +674,92 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@vercel/webpack-asset-relocator-loader': specifier: ^1.7.3 - version: 1.10.0(encoding@0.1.13) + version: 1.10.0 autoprefixer: specifier: ^10.4.14 - version: 10.4.21(postcss@8.5.6) + version: 10.4.21(postcss@8.5.28) browserslist: specifier: ^4.28.2 version: 4.28.2 compression-webpack-plugin: - specifier: ^10.0.0 - version: 10.0.0(webpack@5.102.1) + specifier: ^12.0.0 + version: 12.0.0(webpack@5.111.1) copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.102.1) + specifier: ^14.0.0 + version: 14.0.0(webpack@5.111.1) cross-env: specifier: ~7.0.3 version: 7.0.3 css-loader: specifier: ^5.2.1 - version: 5.2.7(webpack@5.102.1) + version: 5.2.7(webpack@5.111.1) dotenv-webpack: specifier: ^8.0.1 - version: 8.1.1(webpack@5.102.1) + version: 8.1.1(webpack@5.111.1) electron: - specifier: ^38.2.2 - version: 38.6.0 + specifier: ^43.4.1 + version: 43.7.8 esbuild: specifier: ^0.25.10 version: 0.25.12 esbuild-loader: specifier: ^4.3.0 - version: 4.4.0(webpack@5.102.1) - eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) - eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + version: 4.4.0(webpack@5.111.1) + eslint: + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-n: + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-promise: + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.102.1) + version: 6.2.0(webpack@5.111.1) fork-ts-checker-webpack-plugin: specifier: ^9.0.2 - version: 9.1.0(typescript@5.9.3)(webpack@5.102.1) + version: 9.1.0(typescript@5.9.3)(webpack@5.111.1) html-webpack-plugin: specifier: ^5.5.0 - version: 5.6.4(webpack@5.102.1) + version: 5.6.4(webpack@5.111.1) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest-environment-jsdom: - specifier: ^30.2.0 - version: 30.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + specifier: ^30.4.1 + version: 30.5.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) mini-css-extract-plugin: specifier: ^2.2.0 - version: 2.9.4(webpack@5.102.1) + version: 2.9.4(webpack@5.111.1) node-loader: specifier: ~2.0.0 - version: 2.0.0(webpack@5.102.1) + version: 2.0.0(webpack@5.111.1) postcss: - specifier: ^8.4.20 - version: 8.5.6 + specifier: 8.5.28 + version: 8.5.28 postcss-load-config: specifier: ^4.0.1 - version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + version: 4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) postcss-loader: specifier: ^7.0.2 - version: 7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1) + version: 7.3.4(postcss@8.5.28)(typescript@5.9.3)(webpack@5.111.1) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -765,25 +768,25 @@ importers: version: 1.93.3 sass-loader: specifier: ^14.0.0 - version: 14.2.1(sass@1.93.3)(webpack@5.102.1) + version: 14.2.1(sass@1.93.3)(webpack@5.111.1) style-loader: specifier: ^3.3.1 - version: 3.3.4(webpack@5.102.1) + version: 3.3.4(webpack@5.111.1) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) svgo-loader: specifier: ^3.0.0 version: 3.0.3 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-loader: specifier: ^9.2.5 - version: 9.5.4(typescript@5.9.3)(webpack@5.102.1) + version: 9.5.4(typescript@5.9.3)(webpack@5.111.1) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -797,17 +800,17 @@ importers: specifier: ^1.2.3 version: 1.2.3(browserslist@4.28.2) webpack: - specifier: ^5.97.1 - version: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + specifier: ^5.110.3 + version: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.10.2 version: 4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1) + version: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@6.0.0)(webpack@5.111.1) webpack-dev-server: - specifier: ^4.15.2 - version: 4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1) + specifier: ^6.0.0 + version: 6.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.111.1) ../../desktop-package: dependencies: @@ -815,7 +818,7 @@ importers: specifier: ^16.4.5 version: 16.6.1 electron-squirrel-startup: - specifier: ~1.0.0 + specifier: ~1.0.1 version: 1.0.1 devDependencies: '@electron/notarize': @@ -831,41 +834,44 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@vercel/webpack-asset-relocator-loader': specifier: ^1.7.3 - version: 1.10.0(encoding@0.1.13) + version: 1.10.0 cross-env: specifier: ~7.0.3 version: 7.0.3 electron: - specifier: ^38.2.2 - version: 38.6.0 + specifier: ^43.4.1 + version: 43.7.8 electron-builder: - specifier: ^25.1.8 - version: 25.1.8 - eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) - eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^26.15.3 + version: 26.15.3 + eslint: + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-n: + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-promise: + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) node-loader: specifier: ~2.0.0 - version: 2.0.0(webpack@5.102.1) + version: 2.0.0(webpack@5.111.1) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -912,7 +918,7 @@ importers: specifier: ^14.0.0 version: 14.0.2 docx4js: - specifier: ^3.2.20 + specifier: ^3.3.0 version: 3.3.0 domhandler: specifier: ^5.0.3 @@ -921,8 +927,8 @@ importers: specifier: ^3.1.0 version: 3.2.2 htmlparser2: - specifier: ^9.0.0 - version: 9.1.0 + specifier: ~10.1.0 + version: 10.1.0 mammoth: specifier: ^1.9.0 version: 1.11.0 @@ -940,8 +946,8 @@ importers: specifier: ^3.10.7 version: 3.10.7 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/minio': specifier: ~7.0.11 version: 7.0.18 @@ -949,11 +955,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -961,29 +967,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -1009,8 +1018,8 @@ importers: specifier: ^14.0.0 version: 14.0.2 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.3.2 + version: 4.3.2 mammoth: specifier: ^1.9.0 version: 1.11.0 @@ -1019,8 +1028,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 @@ -1028,11 +1037,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -1040,29 +1049,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -1805,72 +1817,96 @@ importers: '@types/node': specifier: ^24.13.3 version: 24.13.6 + '@typescript-eslint/eslint-plugin': + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) autoprefixer: specifier: ^10.4.14 - version: 10.4.21(postcss@8.5.6) + version: 10.4.21(postcss@8.5.28) browserslist: specifier: ^4.28.2 version: 4.28.2 compression-webpack-plugin: - specifier: ^10.0.0 - version: 10.0.0(webpack@5.102.1) + specifier: ^12.0.0 + version: 12.0.0(webpack@5.111.1) cross-env: specifier: ~7.0.3 version: 7.0.3 css-loader: specifier: ^5.2.1 - version: 5.2.7(webpack@5.102.1) + version: 5.2.7(webpack@5.111.1) dotenv-webpack: specifier: ^8.0.1 - version: 8.1.1(webpack@5.102.1) + version: 8.1.1(webpack@5.111.1) esbuild: specifier: ^0.25.10 version: 0.25.12 esbuild-loader: specifier: ^4.3.0 - version: 4.4.0(webpack@5.102.1) + version: 4.4.0(webpack@5.111.1) + eslint: + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-n: + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-promise: + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.102.1) + version: 6.2.0(webpack@5.111.1) fork-ts-checker-webpack-plugin: specifier: ^9.0.2 - version: 9.1.0(typescript@5.9.3)(webpack@5.102.1) + version: 9.1.0(typescript@5.9.3)(webpack@5.111.1) html-webpack-plugin: specifier: ^5.5.0 - version: 5.6.4(webpack@5.102.1) + version: 5.6.4(webpack@5.111.1) mini-css-extract-plugin: specifier: ^2.2.0 - version: 2.9.4(webpack@5.102.1) + version: 2.9.4(webpack@5.111.1) postcss: - specifier: ^8.4.20 - version: 8.5.6 + specifier: 8.5.28 + version: 8.5.28 postcss-load-config: specifier: ^4.0.1 - version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + version: 4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) postcss-loader: specifier: ^7.0.2 - version: 7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1) + version: 7.3.4(postcss@8.5.28)(typescript@5.9.3)(webpack@5.111.1) sass: specifier: ^1.80.0 version: 1.93.3 sass-loader: specifier: ^14.0.0 - version: 14.2.1(sass@1.93.3)(webpack@5.102.1) + version: 14.2.1(sass@1.93.3)(webpack@5.111.1) style-loader: specifier: ^3.3.1 - version: 3.3.4(webpack@5.102.1) + version: 3.3.4(webpack@5.111.1) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) svgo-loader: specifier: ^3.0.0 version: 3.0.3 ts-loader: specifier: ^9.2.5 - version: 9.5.4(typescript@5.9.3)(webpack@5.102.1) + version: 9.5.4(typescript@5.9.3)(webpack@5.111.1) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1878,17 +1914,17 @@ importers: specifier: ^1.2.3 version: 1.2.3(browserslist@4.28.2) webpack: - specifier: ^5.97.1 - version: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + specifier: ^5.110.3 + version: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.10.2 version: 4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1) + version: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@6.0.0)(webpack@5.111.1) webpack-dev-server: - specifier: ^4.15.2 - version: 4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1) + specifier: ^6.0.0 + version: 6.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.111.1) ../../dev/tool: dependencies: @@ -1896,8 +1932,8 @@ importers: specifier: ^7.17.14 version: 7.17.14 '@faker-js/faker': - specifier: ^8.4.1 - version: 8.4.1 + specifier: ^10.6.0 + version: 10.6.0 '@hcengineering/account': specifier: workspace:^0.7.0 version: link:../../server/account @@ -2253,8 +2289,8 @@ importers: specifier: ^14.0.0 version: 14.0.2 csv-parse: - specifier: ~5.1.0 - version: 5.1.0 + specifier: ~7.0.2 + version: 7.0.3 email-addresses: specifier: ^5.0.0 version: 5.0.0 @@ -2269,7 +2305,7 @@ importers: version: 2.1.35 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) msgpackr: specifier: ^1.11.2 version: 1.11.5 @@ -2277,8 +2313,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 utf-8-validate: specifier: ^6.0.4 version: 6.0.5 @@ -2290,8 +2326,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 @@ -2305,17 +2341,17 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@types/request': - specifier: ~2.48.8 + specifier: ~2.48.13 version: 2.48.13 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -2323,29 +2359,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -2375,14 +2414,14 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -2390,26 +2429,29 @@ importers: specifier: ~2.1.1 version: 2.1.1(esbuild@0.25.12) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 + ts-jest: + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2426,30 +2468,27 @@ importers: specifier: workspace:^0.7.12 version: link:../types postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -2457,26 +2496,29 @@ importers: specifier: ~2.1.1 version: 2.1.1(esbuild@0.25.12) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 + ts-jest: + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2499,24 +2541,21 @@ importers: specifier: ^5.2.2 version: 5.3.2 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -2524,26 +2563,29 @@ importers: specifier: ~2.1.1 version: 2.1.1(esbuild@0.25.12) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 + ts-jest: + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2570,17 +2612,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/snappyjs': specifier: ^0.7.1 version: 0.7.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -2588,26 +2630,29 @@ importers: specifier: ~2.1.1 version: 2.1.1(esbuild@0.25.12) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 + ts-jest: + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2625,14 +2670,14 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -2640,26 +2685,29 @@ importers: specifier: ~2.1.1 version: 2.1.1(esbuild@0.25.12) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 + ts-jest: + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2697,8 +2745,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../../core/packages/text-markdown uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 zod: specifier: ^3.22.4 version: 3.25.76 @@ -2707,20 +2755,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -2728,29 +2773,29 @@ importers: specifier: ~2.1.1 version: 2.1.1(esbuild@0.25.12) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2771,14 +2816,14 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -2786,26 +2831,29 @@ importers: specifier: ~2.1.1 version: 2.1.1(esbuild@0.25.12) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 + ts-jest: + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2820,14 +2868,14 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -2835,26 +2883,29 @@ importers: specifier: ~2.1.1 version: 2.1.1(esbuild@0.25.12) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 + ts-jest: + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2872,17 +2923,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -2890,32 +2941,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2930,41 +2981,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2994,41 +3045,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3067,8 +3118,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -3079,38 +3130,38 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -3135,44 +3186,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3202,8 +3253,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -3214,38 +3265,38 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3263,17 +3314,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -3281,32 +3332,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3330,44 +3381,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3385,17 +3436,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -3403,32 +3454,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3439,38 +3490,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ../../foundations/core/packages/measurements-otlp: dependencies: @@ -3524,38 +3575,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ../../foundations/core/packages/model: dependencies: @@ -3588,8 +3639,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -3597,38 +3648,38 @@ importers: specifier: ^2.0.3 version: 2.0.7 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3643,41 +3694,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3685,48 +3736,48 @@ importers: ../../foundations/core/packages/postgres-base: dependencies: postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ../../foundations/core/packages/query: dependencies: @@ -3747,41 +3798,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3799,41 +3850,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3844,44 +3895,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3902,44 +3953,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3960,44 +4011,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4012,17 +4063,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -4030,29 +4081,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4190,44 +4244,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/markdown-it': specifier: ~13.0.0 version: 13.0.9 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4248,47 +4302,47 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/markdown-it': specifier: ~13.0.0 version: 13.0.9 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest-environment-jsdom: - specifier: ^30.2.0 - version: 30.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: ^30.4.1 + version: 30.5.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4299,48 +4353,48 @@ importers: specifier: workspace:^0.7.19 version: link:../text-core htmlparser2: - specifier: ^9.0.0 - version: 9.1.0 + specifier: ~10.1.0 + version: 10.1.0 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4364,44 +4418,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/markdown-it': specifier: ~13.0.0 version: 13.0.9 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4428,47 +4482,47 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) fast-equals: specifier: ^5.2.2 version: 5.3.2 jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest-environment-jsdom: - specifier: ^30.2.0 - version: 30.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: ^30.4.1 + version: 30.5.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4488,54 +4542,51 @@ importers: specifier: ^0.5.6 version: 0.5.6 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4571,50 +4622,47 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4644,44 +4692,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4713,54 +4758,48 @@ importers: specifier: ^5.2.2 version: 5.3.2 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -4784,44 +4823,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -4851,41 +4887,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -4915,44 +4948,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -4982,44 +5012,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5055,44 +5082,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5116,44 +5140,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5174,50 +5195,47 @@ importers: version: 6.10.4 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5237,51 +5255,48 @@ importers: specifier: workspace:^0.7.19 version: link:../core postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5317,44 +5332,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5390,47 +5402,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5472,47 +5481,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../../utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -5522,12 +5528,15 @@ importers: ../../foundations/utils/packages/platform-rig: dependencies: + '@stylistic/eslint-plugin': + specifier: ^5.10.0 + version: 5.10.0(eslint@9.39.5(jiti@2.7.0)) '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 @@ -5538,23 +5547,26 @@ importers: specifier: ^0.9.3 version: 0.9.3(esbuild@0.25.12)(svelte@4.2.20) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^2.32.0 + version: 2.32.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -5565,11 +5577,11 @@ importers: specifier: ^4.2.20 version: 4.2.20 svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) svelte2tsx: specifier: ^0.7.45 version: 0.7.45(svelte@4.2.20)(typescript@5.9.3) @@ -5577,61 +5589,6 @@ importers: specifier: ^5.9.3 version: 5.9.3 - ../../foundations/utils/packages/ui-test: - dependencies: - svelte: - specifier: ^4.2.20 - version: 4.2.20 - devDependencies: - '@hcengineering/platform-rig': - specifier: workspace:^0.7.21 - version: link:../platform-rig - '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 - '@types/node': - specifier: ^24.13.3 - version: 24.13.6 - '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) - eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) - eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) - eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - sass: - specifier: ^1.80.0 - version: 1.93.3 - svelte-loader: - specifier: ^3.2.0 - version: 3.2.4(svelte@4.2.20) - svelte-preprocess: - specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) - ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) - ../../models/achievement: dependencies: '@hcengineering/achievement': @@ -5672,41 +5629,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5760,41 +5717,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5830,41 +5787,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -5894,41 +5851,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -6237,44 +6194,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -6331,41 +6288,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -6419,41 +6376,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -6489,41 +6446,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -6583,41 +6540,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -6689,41 +6646,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -6798,41 +6755,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -6919,41 +6876,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7010,41 +6967,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7113,41 +7070,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7201,41 +7158,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7325,41 +7282,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7470,44 +7427,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7534,41 +7491,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7598,41 +7555,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7671,41 +7628,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7735,41 +7692,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7859,41 +7816,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -7953,41 +7910,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8035,41 +7992,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8123,41 +8080,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8223,41 +8180,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8296,41 +8253,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8390,41 +8347,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8460,41 +8417,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8542,41 +8499,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8636,41 +8593,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8751,41 +8708,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8866,41 +8823,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -8951,41 +8908,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9024,41 +8981,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9124,41 +9081,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9188,41 +9145,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9264,41 +9221,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9328,41 +9285,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9407,41 +9364,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9510,41 +9467,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9616,44 +9573,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -9686,41 +9643,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9765,38 +9722,38 @@ importers: version: link:../../plugins/view devDependencies: '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9844,41 +9801,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9923,41 +9880,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10056,41 +10013,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10141,41 +10098,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10220,41 +10177,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10320,41 +10277,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10384,41 +10341,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10454,41 +10411,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10527,41 +10484,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10600,41 +10557,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10661,41 +10618,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10734,41 +10691,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10813,44 +10770,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10877,41 +10834,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -10950,44 +10907,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11017,41 +10974,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11090,41 +11047,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11154,41 +11111,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11224,41 +11181,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11291,41 +11248,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11367,41 +11324,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11443,41 +11400,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11522,41 +11479,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11592,44 +11549,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11659,44 +11616,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11741,41 +11698,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11814,41 +11771,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11887,41 +11844,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -11951,41 +11908,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12018,41 +11975,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12097,41 +12054,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12164,41 +12121,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12234,41 +12191,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12313,41 +12270,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12383,44 +12340,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12450,41 +12407,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12544,41 +12501,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12614,41 +12571,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12696,41 +12653,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12772,41 +12729,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12884,41 +12841,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -12984,41 +12941,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13072,41 +13029,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13199,41 +13156,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13272,41 +13229,41 @@ importers: specifier: workspace:^0.7.0 version: link:../../plugins/text-editor-resources '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13393,41 +13350,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13520,41 +13477,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13635,38 +13592,38 @@ importers: version: link:../../plugins/workbench devDependencies: '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13705,41 +13662,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13784,41 +13741,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13866,41 +13823,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13933,17 +13890,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -13951,29 +13908,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -13991,17 +13948,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -14009,29 +13966,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14042,41 +13999,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14100,35 +14054,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -14140,19 +14091,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14181,39 +14132,33 @@ importers: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig - '@types/dompurify': - specifier: ^3.0.5 - version: 3.2.0 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -14225,19 +14170,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14305,24 +14250,24 @@ importers: specifier: ^2.0.10 version: 2.0.14 image-size: - specifier: ^1.2.1 - version: 1.2.1 + specifier: ^2.0.4 + version: 2.0.4 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.3.2 + version: 4.3.2 mime-types: specifier: ~2.1.34 version: 2.1.35 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 @@ -14332,39 +14277,36 @@ importers: '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14384,27 +14326,24 @@ importers: specifier: workspace:^0.7.20 version: link:../../foundations/core/packages/platform uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -14412,32 +14351,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest-fetch-mock: specifier: ^3.0.3 - version: 3.0.3(encoding@0.1.13) + version: 3.0.3 prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14473,35 +14412,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -14513,19 +14449,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14543,17 +14479,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -14561,32 +14497,32 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest-fetch-mock: specifier: ^3.0.3 - version: 3.0.3(encoding@0.1.13) + version: 3.0.3 prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14625,35 +14561,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -14665,19 +14598,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14695,17 +14628,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -14713,29 +14646,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14818,8 +14751,8 @@ importers: specifier: ^4.2.20 version: 4.2.20 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 yjs: specifier: ^13.6.27 version: 13.6.27 @@ -14828,50 +14761,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@testing-library/jest-dom': - specifier: ^6.6.3 + specifier: 6.9.1 version: 6.9.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@types/png-chunks-extract': specifier: ^1.0.2 version: 1.0.2 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest-environment-jsdom: - specifier: ^30.2.0 - version: 30.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: ^30.4.1 + version: 30.5.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -14883,19 +14810,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14913,38 +14840,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -14956,50 +14883,50 @@ importers: version: 2.2.0 undici: specifier: ^7.18.2 - version: 7.18.2 + version: 7.30.0 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15020,35 +14947,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -15060,19 +14984,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15104,8 +15028,8 @@ importers: specifier: ^2.0.0 version: 2.0.1(date-fns@2.30.0) dompurify: - specifier: ^3.1.6 - version: 3.3.0 + specifier: ^3.4.15 + version: 3.4.16 fast-equals: specifier: ^5.2.2 version: 5.3.2 @@ -15119,39 +15043,33 @@ importers: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig - '@types/dompurify': - specifier: ^3.0.5 - version: 3.2.0 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -15163,19 +15081,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15196,38 +15114,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15245,41 +15163,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15306,44 +15224,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) autoprefixer: specifier: ^10.4.14 - version: 10.4.21(postcss@8.5.6) + version: 10.4.21(postcss@8.5.28) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) postcss: - specifier: ^8.4.20 - version: 8.5.6 + specifier: 8.5.28 + version: 8.5.28 prettier: specifier: ^3.6.2 version: 3.6.2 @@ -15355,22 +15270,22 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) tailwindcss: specifier: ^3.3.5 version: 3.4.18(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15400,38 +15315,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15449,41 +15364,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15549,35 +15464,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -15589,19 +15501,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15625,38 +15537,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15674,41 +15586,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15771,35 +15683,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -15811,19 +15720,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15856,41 +15765,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -15935,35 +15844,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -15975,19 +15881,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16011,32 +15917,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -16044,8 +15950,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16063,35 +15969,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -16099,8 +16005,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16139,35 +16045,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -16179,19 +16082,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16218,38 +16121,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16267,41 +16170,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16376,35 +16279,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -16416,19 +16316,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16449,38 +16349,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16498,41 +16398,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16598,38 +16498,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -16641,19 +16538,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16694,48 +16591,48 @@ importers: specifier: ^5.2.2 version: 5.3.2 qs: - specifier: ~6.11.0 - version: 6.11.2 + specifier: ~6.16.0 + version: 6.16.0 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/qs': specifier: ~6.9.7 version: 6.9.18 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16753,41 +16650,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16858,8 +16755,8 @@ importers: specifier: ~7.3.0 version: 7.3.4 qs: - specifier: ~6.11.0 - version: 6.11.2 + specifier: ~6.16.0 + version: 6.16.0 svelte: specifier: ^4.2.20 version: 4.2.20 @@ -16868,38 +16765,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/qs': specifier: ~6.9.7 version: 6.9.18 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -16911,19 +16805,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -16959,38 +16853,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17008,41 +16902,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17132,35 +17026,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -17172,19 +17063,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17217,38 +17108,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17266,41 +17157,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17384,35 +17275,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -17424,19 +17312,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17463,38 +17351,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17512,41 +17400,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17687,35 +17575,32 @@ importers: specifier: ^8.1.1 version: 8.1.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -17727,19 +17612,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17760,38 +17645,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17809,41 +17694,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -17927,35 +17812,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -17967,19 +17849,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18018,38 +17900,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18067,41 +17949,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18203,35 +18085,32 @@ importers: specifier: ^8.1.1 version: 8.1.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -18243,19 +18122,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18285,38 +18164,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18334,41 +18213,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18473,44 +18352,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) autoprefixer: specifier: ^10.4.14 - version: 10.4.21(postcss@8.5.6) + version: 10.4.21(postcss@8.5.28) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) postcss: - specifier: ^8.4.20 - version: 8.5.6 + specifier: 8.5.28 + version: 8.5.28 prettier: specifier: ^3.6.2 version: 3.6.2 @@ -18522,22 +18398,22 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) tailwindcss: specifier: ^3.3.5 version: 3.4.18(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18570,38 +18446,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18619,41 +18495,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18752,35 +18628,32 @@ importers: specifier: ^4.2.2 version: 4.2.2 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -18792,19 +18665,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18861,41 +18734,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -18913,44 +18786,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19079,38 +18952,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -19122,19 +18992,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19161,38 +19031,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19240,35 +19110,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -19280,19 +19147,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19313,38 +19180,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19362,41 +19229,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19438,38 +19305,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -19481,19 +19345,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19520,38 +19384,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19569,41 +19433,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19636,35 +19500,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -19676,19 +19537,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19712,38 +19573,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19800,35 +19661,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -19840,19 +19698,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19873,38 +19731,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -19922,41 +19780,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20001,35 +19859,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -20041,19 +19896,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20089,38 +19944,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20138,41 +19993,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20271,35 +20126,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -20311,19 +20163,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20347,38 +20199,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20396,41 +20248,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20481,35 +20333,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -20521,19 +20370,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20563,38 +20412,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20612,41 +20461,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20685,38 +20534,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -20728,19 +20574,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20764,32 +20610,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -20797,8 +20643,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20816,35 +20662,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -20852,8 +20698,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20901,35 +20747,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -20941,19 +20784,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -20974,38 +20817,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21023,41 +20866,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21102,35 +20945,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -21142,19 +20982,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21184,38 +21024,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21233,41 +21073,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21357,35 +21197,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -21397,19 +21234,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21430,38 +21267,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21479,41 +21316,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21573,35 +21410,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -21613,19 +21447,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21652,38 +21486,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21701,41 +21535,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21810,35 +21644,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -21850,19 +21681,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21886,38 +21717,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -21935,41 +21766,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22032,35 +21863,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -22072,19 +21900,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22102,38 +21930,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22157,35 +21985,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -22197,19 +22022,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22227,38 +22052,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22276,41 +22101,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22400,35 +22225,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -22440,19 +22262,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22470,38 +22292,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22519,41 +22341,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22598,35 +22420,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -22638,19 +22457,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22677,38 +22496,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22726,41 +22545,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22847,35 +22666,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -22887,19 +22703,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22923,38 +22739,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -22972,41 +22788,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23057,35 +22873,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -23097,25 +22910,25 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 url-loader: specifier: ~4.1.1 - version: 4.1.1(file-loader@6.2.0(webpack@5.102.1))(webpack@5.102.1) + version: 4.1.1(file-loader@6.2.0(webpack@5.111.1(postcss@8.5.28)))(webpack@5.111.1(postcss@8.5.28)) ../../plugins/love: dependencies: @@ -23154,32 +22967,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -23187,8 +23000,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23206,35 +23019,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -23242,8 +23055,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23357,35 +23170,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -23397,19 +23207,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23430,38 +23240,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23479,41 +23289,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23540,38 +23350,38 @@ importers: specifier: ^3.0.3 version: 3.0.3 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typed-emitter: specifier: ^2.1.0 version: 2.1.0 @@ -23592,41 +23402,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23671,38 +23481,35 @@ importers: specifier: ^3.0.3 version: 3.0.3 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -23714,19 +23521,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typed-emitter: specifier: ^2.1.0 version: 2.1.0 @@ -23765,32 +23572,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -23798,8 +23605,8 @@ importers: specifier: ^1.80.0 version: 1.93.3 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23817,41 +23624,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23923,35 +23730,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -23963,19 +23767,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -23999,38 +23803,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24048,41 +23852,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24130,35 +23934,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -24170,25 +23971,25 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 url-loader: specifier: ~4.1.1 - version: 4.1.1(file-loader@6.2.0(webpack@5.102.1))(webpack@5.102.1) + version: 4.1.1(file-loader@6.2.0(webpack@5.111.1(postcss@8.5.28)))(webpack@5.111.1(postcss@8.5.28)) ../../plugins/openai: dependencies: @@ -24203,41 +24004,41 @@ importers: version: 1.0.21 openai: specifier: ^4.56.0 - version: 4.104.0(encoding@0.1.13)(ws@8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) + version: 4.104.0(ws@8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -24245,8 +24046,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24267,38 +24068,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24316,41 +24117,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24374,38 +24175,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24456,35 +24257,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -24496,19 +24294,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24529,32 +24327,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -24562,8 +24360,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24581,35 +24379,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -24617,8 +24415,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24663,35 +24461,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -24703,19 +24498,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24745,38 +24540,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24794,35 +24589,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -24830,8 +24625,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24912,35 +24707,32 @@ importers: specifier: ^8.1.1 version: 8.1.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -24952,19 +24744,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -24997,41 +24789,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25049,44 +24841,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25158,38 +24950,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -25201,19 +24990,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25234,38 +25023,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25289,38 +25078,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25338,41 +25127,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25423,35 +25212,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -25463,19 +25249,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25496,38 +25282,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25545,41 +25331,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25630,35 +25416,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -25670,19 +25453,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25709,38 +25492,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25758,41 +25541,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25858,38 +25641,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -25901,19 +25681,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -25955,38 +25735,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26004,41 +25784,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26149,35 +25929,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -26189,19 +25966,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26228,38 +26005,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26277,41 +26054,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26374,35 +26151,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -26414,19 +26188,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26453,38 +26227,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26502,41 +26276,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26632,38 +26406,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/qrcode': specifier: ^1.5.5 version: 1.5.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -26675,19 +26446,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26702,32 +26473,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -26735,8 +26506,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26754,38 +26525,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26803,41 +26574,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26867,35 +26638,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -26907,19 +26675,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26943,38 +26711,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -26992,41 +26760,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27071,35 +26839,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -27111,19 +26876,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27147,38 +26912,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27196,41 +26961,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27269,35 +27034,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -27309,19 +27071,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27354,38 +27116,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27403,41 +27165,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27533,35 +27295,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -27573,19 +27332,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27621,38 +27380,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27670,41 +27429,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27797,35 +27556,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -27837,19 +27593,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27870,38 +27626,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27919,41 +27675,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -27998,35 +27754,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -28038,19 +27791,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28095,38 +27848,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28144,41 +27897,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28295,35 +28048,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -28335,19 +28085,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28380,32 +28130,32 @@ importers: specifier: ~5.0.2 version: 5.0.9 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -28413,8 +28163,8 @@ importers: specifier: ^1.80.0 version: 1.93.3 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28432,41 +28182,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28651,8 +28401,8 @@ importers: specifier: ^3.3.0 version: 3.3.0 mermaid: - specifier: ^11.12.0 - version: 11.12.1 + specifier: ^11.17.2 + version: 11.17.2 prosemirror-codemark: specifier: ^0.4.2 version: 0.4.2(prosemirror-inputrules@1.5.1)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3) @@ -28685,38 +28435,35 @@ importers: specifier: ~5.0.2 version: 5.0.9 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/katex': specifier: ^0.16.0 version: 0.16.8 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -28728,19 +28475,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28773,38 +28520,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28822,41 +28569,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -28958,35 +28705,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -28998,19 +28742,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29061,38 +28805,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29110,41 +28854,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29282,35 +29026,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -29322,19 +29063,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29364,38 +29105,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29413,41 +29154,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29531,35 +29272,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -29571,19 +29309,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29604,38 +29342,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29653,41 +29391,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29732,38 +29470,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -29775,19 +29510,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29811,38 +29546,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29863,41 +29598,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -29993,35 +29728,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -30033,19 +29765,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -30075,38 +29807,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -30124,41 +29856,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -30257,35 +29989,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -30297,19 +30026,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -30357,14 +30086,14 @@ importers: version: 12.0.1 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/koa': specifier: ^2.15.0 version: 2.15.0 @@ -30381,11 +30110,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -30393,29 +30122,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -30448,7 +30177,7 @@ importers: version: 6.4.0 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) openid-client: specifier: ~5.7.0 version: 5.7.1 @@ -30469,8 +30198,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/koa': specifier: ^2.15.0 version: 2.15.0 @@ -30496,35 +30225,35 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -30578,17 +30307,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -30596,29 +30325,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -30651,17 +30380,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -30669,29 +30398,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -30702,26 +30431,26 @@ importers: ../../pods/external: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) ../../pods/front: dependencies: @@ -30756,8 +30485,8 @@ importers: specifier: ^1.20.3 version: 1.20.3 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 express: specifier: ^4.21.2 version: 4.21.2 @@ -30765,11 +30494,11 @@ importers: specifier: ^1.5.1 version: 1.5.2 sharp: - specifier: ~0.34.3 - version: 0.34.5 + specifier: ~0.35.3 + version: 0.35.5(@types/node@24.13.6) uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -30781,7 +30510,7 @@ importers: specifier: ~1.7.2 version: 1.7.5 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 @@ -30790,20 +30519,17 @@ importers: specifier: ^1.1.7 version: 1.5.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -30811,29 +30537,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -30929,8 +30655,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/koa': specifier: ^2.15.0 version: 2.15.0 @@ -30947,11 +30673,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -30959,29 +30685,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -31013,11 +30739,11 @@ importers: specifier: workspace:^0.7.18 version: link:../../foundations/core/packages/token cheerio: - specifier: ^1.1.2 - version: 1.1.2 + specifier: ^1.2.0 + version: 1.2.0 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -31025,27 +30751,27 @@ importers: specifier: ^4.21.2 version: 4.21.2 image-size: - specifier: ^1.2.1 - version: 1.2.1 + specifier: ^2.0.4 + version: 2.0.4 morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 oembed-providers: - specifier: ~1.0.20260106 - version: 1.0.20260106 + specifier: ~1.0.20260604 + version: 1.0.20260604 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 @@ -31053,11 +30779,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -31065,32 +30791,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -31156,17 +30879,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -31174,32 +30897,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -31240,8 +30960,8 @@ importers: specifier: ^1.0.9 version: 1.0.9 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -31255,20 +30975,20 @@ importers: specifier: ^11.1.0 version: 11.2.2 morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 node-poppler: specifier: ^8.0.4 version: 8.0.4 sharp: - specifier: ~0.34.3 - version: 0.34.5 + specifier: ~0.35.3 + version: 0.35.5(@types/node@24.13.6) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 @@ -31277,8 +30997,8 @@ importers: specifier: ^1.1.2 version: 1.1.3 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 @@ -31286,11 +31006,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -31298,32 +31018,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -31421,14 +31138,14 @@ importers: specifier: ^4.0.8 version: 4.0.9 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 express: specifier: ^4.21.2 version: 4.21.2 morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 msgpackr: specifier: ^1.11.2 version: 1.11.5 @@ -31455,14 +31172,14 @@ importers: specifier: ~1.19.2 version: 1.19.6 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 @@ -31473,11 +31190,11 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -31485,26 +31202,26 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -31512,8 +31229,8 @@ importers: specifier: ^0.7.0 version: 0.7.0 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -31558,8 +31275,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/koa': specifier: ^2.15.0 version: 2.15.0 @@ -31576,11 +31293,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -31588,29 +31305,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -31649,23 +31366,23 @@ importers: version: link:../../server/workspace-service mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -31673,29 +31390,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -31709,7 +31426,7 @@ importers: specifier: ^16.4.5 version: 16.6.1 electron-squirrel-startup: - specifier: ~1.0.0 + specifier: ~1.0.1 version: 1.0.1 devDependencies: '@electron/notarize': @@ -31725,41 +31442,41 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@vercel/webpack-asset-relocator-loader': specifier: ^1.7.3 - version: 1.10.0(encoding@0.1.13) + version: 1.10.0 cross-env: specifier: ~7.0.3 version: 7.0.3 electron: - specifier: ^38.2.2 - version: 38.6.0 + specifier: ^43.4.1 + version: 43.7.8 electron-builder: - specifier: ^25.1.8 - version: 25.1.8 - eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^26.15.3 + version: 26.15.3 + eslint: + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) node-loader: specifier: ~2.0.0 - version: 2.0.0(webpack@5.102.1) + version: 2.0.0(webpack@5.111.1) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -31780,47 +31497,47 @@ importers: version: 16.6.1 devDependencies: '@faker-js/faker': - specifier: ^8.4.1 - version: 8.4.1 + specifier: ^10.6.0 + version: 10.6.0 '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@playwright/test': - specifier: ^1.48.2 - version: 1.56.1 + specifier: ^1.63.0 + version: 1.63.0 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) allure-js-commons: - specifier: ^3.0.6 - version: 3.4.2(allure-playwright@3.4.2(@playwright/test@1.56.1)) + specifier: ^3.12.1 + version: 3.13.0(allure-playwright@3.13.0(@playwright/test@1.63.0)) allure-playwright: - specifier: ^3.0.6 - version: 3.4.2(@playwright/test@1.56.1) - eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^3.12.1 + version: 3.13.0(@playwright/test@1.63.0) + eslint: + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -31847,41 +31564,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -31935,41 +31652,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -31993,41 +31710,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32084,38 +31801,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32139,41 +31856,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32209,38 +31926,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32261,41 +31978,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32319,38 +32036,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32374,41 +32091,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32450,38 +32167,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32505,41 +32222,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32590,38 +32307,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32645,41 +32362,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32739,38 +32456,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32794,41 +32511,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32849,38 +32566,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32910,41 +32627,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -32992,38 +32709,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33044,44 +32761,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33135,44 +32852,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33196,44 +32913,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33263,44 +32980,44 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33321,41 +33038,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33379,38 +33096,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33434,41 +33151,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33513,38 +33230,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33565,41 +33282,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33629,38 +33346,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33684,41 +33401,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33763,38 +33480,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33812,41 +33529,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33882,38 +33599,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -33934,41 +33651,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34007,38 +33724,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34062,35 +33779,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -34098,8 +33815,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34144,32 +33861,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -34177,8 +33894,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34208,41 +33925,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34296,38 +34013,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34351,41 +34068,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34415,35 +34132,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -34451,8 +34168,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34491,32 +34208,32 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -34524,8 +34241,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34549,41 +34266,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34607,41 +34324,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34680,38 +34397,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34732,41 +34449,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34814,38 +34531,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34872,41 +34589,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34936,38 +34653,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -34988,41 +34705,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35046,38 +34763,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35101,41 +34818,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35180,38 +34897,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35244,41 +34961,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35335,38 +35052,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35390,41 +35107,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35451,41 +35168,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35539,38 +35256,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35594,41 +35311,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35685,38 +35402,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35740,41 +35457,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35810,41 +35527,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-config-prettier: specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + version: 8.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35868,41 +35585,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35929,38 +35646,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -35996,7 +35713,7 @@ importers: version: link:../../foundations/core/packages/token mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) otp-generator: specifier: ^4.0.1 version: 4.0.1 @@ -36004,15 +35721,15 @@ importers: specifier: ^12.0.1 version: 12.0.1 postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -36023,35 +35740,35 @@ importers: specifier: ^8.11.6 version: 8.15.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -36108,7 +35825,7 @@ importers: version: 12.0.1 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -36117,8 +35834,8 @@ importers: specifier: ^0.9.0 version: 0.9.2 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/koa': specifier: ^2.15.0 version: 2.15.0 @@ -36135,11 +35852,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -36147,29 +35864,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -36229,8 +35946,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -36238,35 +35955,35 @@ importers: specifier: ^3.1.3 version: 3.1.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -36320,8 +36037,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -36329,35 +36046,35 @@ importers: specifier: ^3.1.3 version: 3.1.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -36440,14 +36157,14 @@ importers: specifier: ^1.20.3 version: 1.20.3 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 express: specifier: ^4.21.2 version: 4.21.2 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) ws: specifier: ^8.21.0 version: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -36465,14 +36182,14 @@ importers: specifier: ~1.7.2 version: 1.7.5 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -36480,11 +36197,11 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -36492,29 +36209,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -36561,8 +36278,8 @@ importers: specifier: ^1.20.3 version: 1.20.3 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 express: specifier: ^4.21.2 version: 4.21.2 @@ -36573,14 +36290,14 @@ importers: specifier: ^2.2.0 version: 2.2.0 morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 sharp: - specifier: ~0.34.3 - version: 0.34.5 + specifier: ~0.35.3 + version: 0.35.5(@types/node@24.13.6) uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -36589,7 +36306,7 @@ importers: specifier: ~1.19.2 version: 1.19.6 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 @@ -36598,50 +36315,47 @@ importers: specifier: ^1.1.7 version: 1.5.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -36713,44 +36427,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -37209,17 +36920,17 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -37227,29 +36938,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -37320,63 +37031,60 @@ importers: specifier: ^5.2.2 version: 5.3.2 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.3.2 + version: 4.3.2 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -37445,8 +37153,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/koa': specifier: ^2.15.0 version: 2.15.0 @@ -37463,11 +37171,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -37475,29 +37183,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -37595,8 +37303,8 @@ importers: specifier: workspace:^0.7.0 version: link:../../../plugins/workbench cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -37607,20 +37315,20 @@ importers: specifier: ^5.2.2 version: 5.3.2 form-data: - specifier: ^4.0.0 - version: 4.0.4 + specifier: ^4.0.6 + version: 4.0.6 js-tiktoken: specifier: ^1.0.14 version: 1.0.21 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) openai: specifier: ^4.56.0 - version: 4.104.0(encoding@0.1.13)(ws@8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) + version: 4.104.0(ws@8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 ws: specifier: ^8.21.0 version: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -37632,59 +37340,53 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -37722,8 +37424,8 @@ importers: specifier: workspace:^0.7.18 version: link:../../../foundations/core/packages/token cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -37741,53 +37443,50 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -37825,8 +37524,8 @@ importers: specifier: workspace:^0.7.18 version: link:../../../foundations/core/packages/token cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -37834,14 +37533,14 @@ importers: specifier: ^4.21.2 version: 4.21.2 morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 sharp: - specifier: ~0.34.3 - version: 0.34.5 + specifier: ~0.35.3 + version: 0.35.5(@types/node@24.13.6) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -37850,7 +37549,7 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 @@ -37859,8 +37558,8 @@ importers: specifier: ^1.1.7 version: 1.5.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 @@ -37871,41 +37570,38 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -37949,8 +37645,8 @@ importers: specifier: workspace:^0.7.18 version: link:../../../foundations/core/packages/token cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -37958,17 +37654,17 @@ importers: specifier: ^4.21.2 version: 4.21.2 morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 on-headers: specifier: ^1.0.2 version: 1.1.0 postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -37977,14 +37673,14 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 @@ -37994,18 +37690,15 @@ importers: '@types/on-headers': specifier: ^1.0.2 version: 1.0.4 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -38013,32 +37706,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -38097,8 +37787,8 @@ importers: specifier: workspace:^0.7.19 version: link:../../../foundations/core/packages/text cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -38113,10 +37803,10 @@ importers: version: 0.10.4 google-auth-library: specifier: ^8.0.2 - version: 8.9.0(encoding@0.1.13) + version: 8.9.0 googleapis: specifier: ^122.0.0 - version: 122.0.0(encoding@0.1.13) + version: 122.0.0 jwt-simple: specifier: ^0.5.6 version: 0.5.6 @@ -38131,14 +37821,14 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -38146,41 +37836,38 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -38240,17 +37927,17 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -38258,32 +37945,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -38333,8 +38017,8 @@ importers: specifier: ^4.0.2 version: 4.4.4 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -38348,17 +38032,17 @@ importers: specifier: ^11.1.0 version: 11.2.2 morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 on-headers: specifier: ^1.0.2 version: 1.1.0 postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -38367,7 +38051,7 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 @@ -38376,8 +38060,8 @@ importers: specifier: ^1.1.7 version: 1.5.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 @@ -38387,48 +38071,42 @@ importers: '@types/on-headers': specifier: ^1.0.2 version: 1.0.4 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -38514,8 +38192,8 @@ importers: specifier: ^7.0.1 version: 7.0.1 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 csv-stringify: specifier: ^6.5.2 version: 6.6.0 @@ -38526,14 +38204,14 @@ importers: specifier: ^4.21.2 version: 4.21.2 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.3.2 + version: 4.3.2 tar: - specifier: ^7.5.2 - version: 7.5.2 + specifier: ^7.5.21 + version: 7.5.22 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 ws: specifier: ^8.21.0 version: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -38548,32 +38226,29 @@ importers: specifier: ^6.0.3 version: 6.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -38581,32 +38256,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -38660,38 +38332,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -38709,41 +38381,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -38851,38 +38523,35 @@ importers: specifier: workspace:^0.7.21 version: link:../../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/qs': specifier: ~6.9.7 version: 6.9.18 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -38894,19 +38563,19 @@ importers: version: 1.93.3 svelte-check: specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20) + version: 3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20) svelte-eslint-parser: - specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.20) + specifier: ^1.8.1 + version: 1.8.1(svelte@4.2.20) svelte-loader: specifier: ^3.2.0 version: 3.2.4(svelte@4.2.20) svelte-preprocess: specifier: ^5.1.4 - version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + version: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -39011,41 +38680,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -39365,8 +39034,8 @@ importers: specifier: ^1.20.3 version: 1.20.3 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -39384,7 +39053,7 @@ importers: version: 14.1.0 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) octokit: specifier: ^3.1.1 version: 3.2.2 @@ -39405,7 +39074,7 @@ importers: specifier: ~1.7.2 version: 1.7.5 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 @@ -39414,26 +39083,23 @@ importers: specifier: ^1.1.7 version: 1.5.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/markdown-it': specifier: ~13.0.0 version: 13.0.9 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -39441,26 +39107,26 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) graphql-binding: specifier: ^2.5.2 version: 2.5.2 jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -39468,8 +39134,8 @@ importers: specifier: ^1.2.3 version: 1.2.5 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -39502,41 +39168,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -39581,41 +39247,41 @@ importers: specifier: workspace:^0.7.21 version: link:../../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -39654,38 +39320,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -39762,8 +39428,8 @@ importers: specifier: workspace:^0.7.0 version: link:../../../plugins/setting cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -39778,22 +39444,22 @@ importers: version: 0.10.4 gaxios: specifier: ^5.0.1 - version: 5.1.3(encoding@0.1.13) + version: 5.1.3 google-auth-library: specifier: ^8.0.2 - version: 8.9.0(encoding@0.1.13) + version: 8.9.0 googleapis: specifier: ^122.0.0 - version: 122.0.0(encoding@0.1.13) + version: 122.0.0 jwt-simple: specifier: ^0.5.6 version: 0.5.6 sanitize-html: - specifier: ^2.15.0 - version: 2.17.0 + specifier: 2.17.5 + version: 2.17.5 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 ws: specifier: ^8.21.0 version: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -39805,32 +39471,29 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@types/sanitize-html': - specifier: ^2.15.0 - version: 2.16.0 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 + specifier: ^2.16.1 + version: 2.16.2 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -39838,32 +39501,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -39937,8 +39597,8 @@ importers: specifier: workspace:^0.7.18 version: link:../../foundations/core/packages/token cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -39952,8 +39612,8 @@ importers: specifier: ^2.13.3 version: 2.14.0 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 ws: specifier: ^8.21.0 version: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -39965,29 +39625,26 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -39995,32 +39652,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -40076,8 +39730,8 @@ importers: specifier: workspace:^0.7.16 version: link:../../../foundations/server/packages/server-storage image-size: - specifier: ^1.2.1 - version: 1.2.1 + specifier: ^2.0.4 + version: 2.0.4 kafkajs: specifier: ^2.2.4 version: 2.2.4 @@ -40085,8 +39739,8 @@ importers: specifier: ^14.0.0 version: 14.1.0 sanitize-html: - specifier: ^2.15.0 - version: 2.17.0 + specifier: 2.17.5 + version: 2.17.5 striptags: specifier: ^3.2.0 version: 3.2.0 @@ -40094,8 +39748,8 @@ importers: specifier: ^7.2.0 version: 7.2.2 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -40107,8 +39761,8 @@ importers: specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/markdown-it': specifier: ~13.0.0 version: 13.0.9 @@ -40116,50 +39770,44 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@types/sanitize-html': - specifier: ^2.15.0 - version: 2.16.0 + specifier: ^2.16.1 + version: 2.16.2 '@types/turndown': specifier: ^5.0.5 version: 5.0.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -40169,9 +39817,9 @@ importers: ../../services/mail/pod-mail: dependencies: - '@aws-sdk/client-ses': - specifier: ^3.1107.0 - version: 3.1137.0 + '@aws-sdk/client-sesv2': + specifier: ^3.1121.0 + version: 3.1147.0 '@hcengineering/analytics': specifier: workspace:^0.7.19 version: link:../../../foundations/core/packages/analytics @@ -40184,12 +39832,9 @@ importers: '@hcengineering/server-core': specifier: workspace:^0.7.19 version: link:../../../foundations/server/packages/core - '@types/nodemailer': - specifier: ^6.4.17 - version: 6.4.21 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -40200,8 +39845,8 @@ importers: specifier: ^11.1.0 version: 11.2.2 nodemailer: - specifier: ^6.10.0 - version: 6.10.1 + specifier: ^9.1.1 + version: 9.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -40210,23 +39855,26 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 + '@types/nodemailer': + specifier: ^8.0.1 + version: 8.0.2 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -40234,32 +39882,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -40324,8 +39969,8 @@ importers: specifier: workspace:^0.7.18 version: link:../../../foundations/core/packages/token cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -40339,14 +39984,14 @@ importers: specifier: ^11.1.0 version: 11.2.2 sanitize-html: - specifier: ^2.15.0 - version: 2.17.0 + specifier: 2.17.5 + version: 2.17.5 turndown: specifier: ^7.2.0 version: 7.2.2 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -40355,32 +40000,29 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@types/sanitize-html': - specifier: ^2.15.0 - version: 2.16.0 + specifier: ^2.16.1 + version: 2.16.2 '@types/turndown': specifier: ^5.0.5 version: 5.0.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -40388,32 +40030,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -40479,17 +40118,17 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -40497,32 +40136,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -40560,8 +40196,8 @@ importers: specifier: workspace:^0.7.18 version: link:../../../foundations/core/packages/token cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -40579,14 +40215,14 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -40594,11 +40230,11 @@ importers: specifier: ^3.6.4 version: 3.6.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -40606,32 +40242,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -40669,8 +40302,8 @@ importers: specifier: ^0.37.0 version: 0.37.0 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -40681,20 +40314,20 @@ importers: specifier: ^7.4.0 version: 7.5.1(express@4.21.2) morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 on-headers: specifier: ^1.0.2 version: 1.1.0 postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 stripe: specifier: ^17.3.1 version: 17.7.0 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -40703,7 +40336,7 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 @@ -40712,8 +40345,8 @@ importers: specifier: ^6.0.0 version: 6.0.2(express@4.21.2) '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 @@ -40723,18 +40356,15 @@ importers: '@types/on-headers': specifier: ^1.0.2 version: 1.0.4 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -40742,32 +40372,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -40805,8 +40432,8 @@ importers: specifier: workspace:^0.7.18 version: link:../../../foundations/core/packages/token cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -40818,7 +40445,7 @@ importers: version: 1.11.0 puppeteer: specifier: ^25.3.0 - version: 25.11.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)(yauzl@2.10.0) + version: 25.11.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) ws: specifier: ^8.21.0 version: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -40830,14 +40457,14 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -40845,11 +40472,11 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -40857,32 +40484,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -40951,53 +40575,47 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -41087,8 +40705,8 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/koa': specifier: ^2.15.0 version: 2.15.0 @@ -41105,11 +40723,11 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -41117,29 +40735,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -41161,6 +40779,9 @@ importers: '@hcengineering/platform': specifier: workspace:^0.7.20 version: link:../../foundations/core/packages/platform + '@hcengineering/server-client': + specifier: workspace:^0.7.16 + version: link:../../foundations/server/packages/client '@hcengineering/server-core': specifier: workspace:^0.7.19 version: link:../../foundations/server/packages/core @@ -41171,8 +40792,8 @@ importers: specifier: ^1.20.3 version: 1.20.3 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -41183,8 +40804,8 @@ importers: specifier: ^4.21.2 version: 4.21.2 express-form-data: - specifier: ^2.0.22 - version: 2.0.23 + specifier: ^3.0.1 + version: 3.0.1 html-to-text: specifier: ^9.0.3 version: 9.0.5 @@ -41204,14 +40825,17 @@ importers: specifier: ~2.1.34 version: 2.1.35 morgan: - specifier: ^1.10.0 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.12.1 pdfjs-dist: - specifier: 2.12.313 - version: 2.12.313 + specifier: 6.2.108 + version: 6.2.108 sharp: - specifier: ~0.34.3 - version: 0.34.5 + specifier: ~0.35.3 + version: 0.35.5(@types/node@24.13.6) + unpdf: + specifier: ~1.8.1 + version: 1.8.1(@napi-rs/canvas@1.0.10) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -41220,7 +40844,7 @@ importers: specifier: ~1.19.2 version: 1.19.6 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 @@ -41232,8 +40856,8 @@ importers: specifier: ^8.1.1 version: 8.1.1 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/mime-types': specifier: ~2.1.1 version: 2.1.4 @@ -41244,44 +40868,41 @@ importers: specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) node-loader: specifier: ~2.0.0 - version: 2.0.0(webpack@5.102.1(esbuild@0.25.12)) + version: 2.0.0(webpack@5.111.1(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6))) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -41328,20 +40949,20 @@ importers: specifier: workspace:^0.7.18 version: link:../../../foundations/core/packages/token '@signpdf/placeholder-pdf-lib': - specifier: ^3.2.4 - version: 3.2.6(pdf-lib@1.17.1) + specifier: ^3.3.0 + version: 3.3.0(pdf-lib@1.17.1) '@signpdf/signer-p12': - specifier: ^3.2.4 - version: 3.2.4(node-forge@1.3.1) + specifier: ^3.3.0 + version: 3.3.0(node-forge@1.4.0) '@signpdf/signpdf': - specifier: ^3.2.4 - version: 3.2.5 + specifier: ^3.3.0 + version: 3.3.0 '@signpdf/utils': - specifier: ^3.2.4 - version: 3.2.4 + specifier: ^3.3.0 + version: 3.3.0 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -41350,12 +40971,12 @@ importers: version: 4.21.2 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) node-forge: - specifier: ^1.3.1 - version: 1.3.1 + specifier: ^1.3.3 + version: 1.4.0 pdf-lib: - specifier: ^1.12.0 + specifier: ^1.17.1 version: 1.17.1 devDependencies: '@hcengineering/platform-rig': @@ -41365,53 +40986,50 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -41497,8 +41115,8 @@ importers: specifier: ^0.5.0 version: 0.5.0 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -41506,20 +41124,20 @@ importers: specifier: ^4.21.2 version: 4.21.2 htmlparser2: - specifier: ^9.0.0 - version: 9.1.0 + specifier: ~10.1.0 + version: 10.1.0 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) otp-generator: specifier: ^4.0.1 version: 4.0.1 postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 telegraf: specifier: ^4.16.3 - version: 4.16.3(encoding@0.1.13) + version: 4.16.3 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -41528,14 +41146,14 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -41546,41 +41164,38 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -41636,8 +41251,8 @@ importers: specifier: ^1.6.51 version: 1.6.52 cors: - specifier: ^2.8.5 - version: 2.8.5 + specifier: ^2.8.6 + version: 2.8.6 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -41645,8 +41260,8 @@ importers: specifier: ^4.21.2 version: 4.21.2 htmlparser2: - specifier: ^9.0.0 - version: 9.1.0 + specifier: ~10.1.0 + version: 10.1.0 jwt-simple: specifier: ^0.5.6 version: 0.5.6 @@ -41655,13 +41270,13 @@ importers: version: 3.0.0 mongodb: specifier: ^6.16.0 - version: 6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7) + version: 6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7) telegram: specifier: 2.22.2 version: 2.22.2 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: ^11.1.1 + version: 11.1.1 ws: specifier: ^8.21.0 version: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -41673,32 +41288,29 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/mime': specifier: ^3.0.1 version: 3.0.4 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) bson: specifier: ^6.10.3 version: 6.10.4 @@ -41706,29 +41318,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node-dev: specifier: ^2.0.0 version: 2.0.0(@types/node@24.13.6)(typescript@5.9.3) @@ -41797,7 +41409,7 @@ importers: version: 16.6.1 openai: specifier: ^4.56.0 - version: 4.104.0(encoding@0.1.13)(ws@8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) + version: 4.104.0(ws@8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -41806,8 +41418,8 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 @@ -41818,41 +41430,38 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -41878,8 +41487,8 @@ importers: specifier: ^16.4.5 version: 16.6.1 postgres: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 devDependencies: '@hcengineering/platform-rig': specifier: workspace:^0.7.21 @@ -41891,23 +41500,20 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 - '@types/uuid': - specifier: ^8.3.1 - version: 8.3.4 '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -41915,32 +41521,29 @@ importers: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) @@ -41973,47 +41576,47 @@ importers: version: 16.6.1 devDependencies: '@faker-js/faker': - specifier: ^8.4.1 - version: 8.4.1 + specifier: ^10.6.0 + version: 10.6.0 '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@playwright/test': - specifier: ^1.48.2 - version: 1.56.1 + specifier: ^1.63.0 + version: 1.63.0 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) allure-js-commons: - specifier: ^3.0.6 - version: 3.4.2(allure-playwright@3.4.2(@playwright/test@1.56.1)) + specifier: ^3.12.1 + version: 3.13.0(allure-playwright@3.13.0(@playwright/test@1.63.0)) allure-playwright: - specifier: ^3.0.6 - version: 3.4.2(@playwright/test@1.56.1) - eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^3.12.1 + version: 3.13.0(@playwright/test@1.63.0) + eslint: + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -42079,14 +41682,14 @@ importers: specifier: ~1.7.2 version: 1.7.5 '@types/cors': - specifier: ^2.8.12 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^4.17.13 version: 4.17.25 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/morgan': specifier: ~1.9.9 version: 1.9.10 @@ -42097,35 +41700,35 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + specifier: ^30.4.2 + version: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: - specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3) + specifier: ^29.4.12 + version: 29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -42146,8 +41749,8 @@ importers: version: 16.6.1 devDependencies: '@faker-js/faker': - specifier: ^8.4.1 - version: 8.4.1 + specifier: ^10.6.0 + version: 10.6.0 '@hcengineering/platform-rig': specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig @@ -42155,41 +41758,41 @@ importers: specifier: workspace:^0.7.0 version: link:../../tests/sanity '@playwright/test': - specifier: ^1.48.2 - version: 1.56.1 + specifier: ^1.63.0 + version: 1.63.0 '@types/jest': - specifier: ^29.5.5 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^24.13.3 version: 24.13.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) allure-js-commons: - specifier: ^3.0.6 - version: 3.4.2(allure-playwright@3.4.2(@playwright/test@1.56.1)) + specifier: ^3.12.1 + version: 3.13.0(allure-playwright@3.13.0(@playwright/test@1.63.0)) allure-playwright: - specifier: ^3.0.6 - version: 3.4.2(@playwright/test@1.56.1) - eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^3.12.1 + version: 3.13.0(@playwright/test@1.63.0) + eslint: + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -42203,38 +41806,38 @@ importers: specifier: workspace:^0.7.21 version: link:../../foundations/utils/packages/platform-rig '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) esbuild: specifier: ^0.25.10 version: 0.25.12 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0) + eslint-config-love: + specifier: ^157.0.0 + version: 157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-secure-coding: + specifier: ^5.4.4 + version: 5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) sharp: - specifier: ~0.34.3 - version: 0.34.5 + specifier: ~0.35.3 + version: 0.35.5(@types/node@24.13.6) packages: - 7zip-bin@5.2.0: - resolution: {integrity: sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==} - '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} @@ -42266,46 +41869,82 @@ packages: resolution: {integrity: sha512-ppiYnDyy2qCDT3PIV83XJwAi0BhVUZ/jOHxUgC5tlMCaFeKRL8PVVub8A0pUMkF1yvZtzNOp3ClbmTCcIa9w3g==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-ses@3.1137.0': - resolution: {integrity: sha512-Jc1rSvHYW78ElD1z4fXCw0YNF6eExMWvCIFi23OcC0qbsznSXH9utDx98Ula0mWs9UzC0Qk93AqReCl5qXy+Qw==} + '@aws-sdk/client-sesv2@3.1147.0': + resolution: {integrity: sha512-Fv2buzcD/rPu3DA2dRoFlUKPc6vhHTPVr8La+4C+XS+qk3hSvwRPDQOYy1wmb02wCl7MgOkoIkTJZ7NZx2IMPw==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.978.0': resolution: {integrity: sha512-2yX9LUmxPklVjSGTb8dfnWRJSiFQ3TeH2nn7G1mdKHTfnabzF0+gfrS8rYfLWmZrQ8A3mEcxMJjRc51dL5KWaA==} engines: {node: '>=20.0.0'} + '@aws-sdk/core@3.978.1': + resolution: {integrity: sha512-LbY9aGsEiznDWmUc30Nwv3aIX/+dbwTx8KfS0yOC3NPYMO+O91e6jkT1azf34FwjOndq8/Q+RcVVZz5xnerwdg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.71': resolution: {integrity: sha512-JN+JHruYZw3GUZB8YGAlDk4wTDPOEAEEdEzj5nS0xodWR4smzHsN7PnK2j6IeOsDIj2aqua5DSbhXl9Gtf90FQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.72': + resolution: {integrity: sha512-xTKO/FWJPozTIXbozVnVGoNBhaGba8TBcx+KyUjRVeOlXE+dUc7GTR1cLvu0uTdIdmemzaFbqqCshXeZA1fZew==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.972.73': resolution: {integrity: sha512-uyYYnJOnlis8uQzaYGPd7N1JoioCoNpXgnkXYixsWJXHXgXyYi8WXJSDfofxJeWfQIGWLe2Nwyq60Uc7MZdVOg==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.972.74': + resolution: {integrity: sha512-u91E/hT8f4d1xy0Jl7VG4nVKJ3lxbrZkoBTeSVoJdWBiSEUMwMS/9+e0H/aJVQV//Lt5wuzP+E69v4aRSsNTmw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.973.16': resolution: {integrity: sha512-i++ly+0Uxa+u3ebSSyr0S/3CFhFJDxCXT3+Zj+mW2bXenEx5bKGCdTIKFu39SgXBNhWDjex/8cXUx9MUTMCrTw==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.973.17': + resolution: {integrity: sha512-ged4KXdBkvIC81bLvNHHuQKdKak/VXhQTR1NWYTTqW0474nlmsxy9O/vlgTIohDDWH3xpBdtVMZRyjb+DnocDA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.972.78': resolution: {integrity: sha512-eUtswnXu0+Ii9ieRK+0L7aPFV3Z/dnW2VntJzjBP9xs8s+8p5nBNuymIXtXwZ+5r5+XJP3e32nMkuZ/r0HozEA==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.972.79': + resolution: {integrity: sha512-L+Z85anONJd8MaiuraO4wRxATCdEejBZ3K3eymzWI5JPXa9sOS9CkIm72PBKqXKX+Z9p9NGMX5AIMXm0LEflgw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-node@3.972.83': resolution: {integrity: sha512-jdso7ejzfRnatxMUZK4S/U6KbaDPCvfIV4XL+IQAPFDBt5rj5Fq595euqlK8Le4lNCMFR9oUpt+1l0aMgaayOQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-node@3.972.84': + resolution: {integrity: sha512-oHt854odINVwzwsh+c5x69j0ajm4DbqqqVJ+O1ECsCIZeMDAbzFpXItaqP7UZstJj/ATdTk/KFSH0LaNAgV+kA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.972.71': resolution: {integrity: sha512-lYmXJa4gvq4xN1lrT5NiP5vIYYKcGWAdj8y+8o6dlcateB5eF3Dn8DtmjjHKfMBrTPAMr2pebIiX/UOj8c1/UA==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.972.72': + resolution: {integrity: sha512-rLIp2xbMjX/k9/od7APpqq1ZgXXnV0pOL1Th3ZsL8Wu0TRtBsDTVS8iPqcfRFcHakFxPvR04OSTv2ka2qOb/2A==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.973.15': resolution: {integrity: sha512-6Jhcf4v0pSFdjk1EW2kvzuEBKD+UZ2uNcHUIglKKLndD20YhvkL2kdmDOV5/j4mYuWWwe/a1FQ1aomU86/Cg5Q==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.973.16': + resolution: {integrity: sha512-IGihaJfFZYacJJr/odqILCoK7W/mvrZ7cuK7ECn3sAu4vLC6u0V8bS7mCGbdugJ8Aum2tnvqmx0F2MRFp2rn9g==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-web-identity@3.972.77': resolution: {integrity: sha512-uylIQSUWpfLuH2LovxEEfwzJGM/SabLOfLMg6YXu/E8jJEKUdpdILCVCQCdFvHyu/7dLJOHPMfrSwduxO56NkQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-web-identity@3.972.78': + resolution: {integrity: sha512-/y9WvNtlcPBGLR0qc1a+9J/xtYZfVczvLUOuXaVWylzttH7ewsxwHtjmiJSolNrVSDorIxHGHMU61CbonRkmwA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/lib-storage@3.1137.0': resolution: {integrity: sha512-cR6ASsKeOv2WkfFEdSneGHTx6D1aGcHbNTyowznyrxatIftPBdY8YPPAimN7Xed3NvPM+8K5fFSkXaXzuEhxMA==} engines: {node: '>=20.0.0'} @@ -42320,6 +41959,10 @@ packages: resolution: {integrity: sha512-mooq9Q+jLa18VoM7HouczmslZU60iiB0aKc/Ztnq/luIL1ud0z4DnYprLR/ZO1gp331S9tJctM1HZr7u6YKBXQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/nested-clients@3.997.46': + resolution: {integrity: sha512-oRxtBcka/JGHGs9l9p9IVajGoTP8vTPmoAzdHGy4Qcy9P5vPnDf6nhIeM/COQNY9k/OahImTRaLkHftoXvfcmQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/s3-request-presigner@3.1137.0': resolution: {integrity: sha512-OJQwS0qt5fQMoZSccncZQBLLvSZ3Jw7Lo+E3MYBNNPRnUkvJxn5LeY246K+1QvoL9o8zHpYVPa7YgCL+zf+xtg==} engines: {node: '>=20.0.0'} @@ -42328,18 +41971,34 @@ packages: resolution: {integrity: sha512-L+2xZTye/2T96f3lwCws0Zw6GG2JHZW9e8FpVgGBeeExSKyeoZ6CWRpBml/7DNiK/O26jrgPM9F+Ay8VkgzUWQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/signature-v4-multi-region@3.996.47': + resolution: {integrity: sha512-Zk08macMvQTHzQJCLJVkOlviVoqwYMrpXv4lmLN7b7sAbiMoOK7Go0NYdR5UeF+MW8LIbRmwrNy9u/5VvX1U5g==} + engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1129.0': resolution: {integrity: sha512-Sbl3rpzQdsG4ZK2zh0JWUYyZPKKorJlVOddA2T0DVbKJFrsW8J6wgnslxxUH04+WaBMr4A1HzJZvZX0xUvkniA==} engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1138.0': + resolution: {integrity: sha512-GpyAr0DD63YOEmYFM6Df+gJuIgC92MMTiBK4FTKfxii5MJ9ge20epR7LyroulscYlG89J+ZB2ivFDPjvfQhzdw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/types@3.974.5': resolution: {integrity: sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/types@3.974.6': + resolution: {integrity: sha512-v/clNZzZnDxGyvpHMOGpJKVXFAExJzUNAAjaWGdcx8QAcXLGwTaOkw33p5SHAi0YAioK32xB3hWwOekRVfmfKg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/xml-builder@3.972.40': resolution: {integrity: sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA==} engines: {node: '>=20.0.0'} + '@aws-sdk/xml-builder@3.972.41': + resolution: {integrity: sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ==} + engines: {node: '>=20.0.0'} + '@aws/lambda-invoke-store@0.3.0': resolution: {integrity: sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==} engines: {node: '>=18.0.0'} @@ -42513,26 +42172,14 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@braintree/sanitize-url@7.1.1': - resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} '@bufbuild/protobuf@1.10.1': resolution: {integrity: sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==} - '@chevrotain/cst-dts-gen@11.0.3': - resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} - - '@chevrotain/gast@11.0.3': - resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} - - '@chevrotain/regexp-to-ast@11.0.3': - resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} - - '@chevrotain/types@11.0.3': - resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} - - '@chevrotain/utils@11.0.3': - resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} @@ -42576,10 +42223,6 @@ packages: '@dabh/diagnostics@2.0.8': resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} - '@develar/schema-utils@2.6.5': - resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} - engines: {node: '>= 8.9.0'} - '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -42588,42 +42231,66 @@ packages: resolution: {integrity: sha512-6uQ1pVXutwz1Krwooo67W+3K8BwH1ASMh1WoHTpomUzw8EXecXN5lHIJ9EPqTHuv1WqR2LKkSJyagcq0HYUJpg==} engines: {node: '>=12'} + '@electron-internal/extract-zip@1.0.5': + resolution: {integrity: sha512-+bqFCP98pLI0Tt0XQo1TmlXtwjWchISndDOxCkEcIuUgXWpBnLyRI+2DU+mesvnMMX6L1XDqYNA0lXNDHd/yiA==} + engines: {node: '>=22.12.0'} + '@electron/asar@3.4.1': resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} engines: {node: '>=10.12.0'} hasBin: true - '@electron/get@2.0.3': - resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} - engines: {node: '>=12'} + '@electron/fuses@1.8.0': + resolution: {integrity: sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==} + hasBin: true + + '@electron/get@3.1.0': + resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==} + engines: {node: '>=14'} + + '@electron/get@5.1.0': + resolution: {integrity: sha512-3kSBtG8ObcTVfXanm5vVJ6UnBLEVmVsRk1M+vGqCuMBV+XLCbJYuWQful+yIy0GQDsSlK0kHEriEHn7SPk4EnA==} + engines: {node: '>=22.12.0'} '@electron/notarize@2.5.0': resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} engines: {node: '>= 10.0.0'} - '@electron/osx-sign@1.3.1': - resolution: {integrity: sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==} + '@electron/osx-sign@1.3.3': + resolution: {integrity: sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==} engines: {node: '>=12.0.0'} hasBin: true - '@electron/rebuild@3.6.1': - resolution: {integrity: sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==} - engines: {node: '>=12.13.0'} + '@electron/rebuild@4.2.1': + resolution: {integrity: sha512-IS4pG3BysRrCLJ8xTAfvg+IQDbiUoAzdJy2SfjcYKnLDy5DpCdjnPdhS5Zf5UMfrkB24xu0KC+TqcOxg+eG+6w==} + engines: {node: '>=22.12.0'} hasBin: true - '@electron/universal@2.0.1': - resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} + '@electron/universal@2.0.3': + resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} engines: {node: '>=16.4'} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.7.0': resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/runtime@1.7.0': resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} @@ -42780,6 +42447,18 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.8.1': + resolution: {integrity: sha512-vafrdi15JHBFh1qWOAucyJwlEEuhdoMof28jOdKdgnwZ7bXwd6v4wzHYSmAVLwnx0yc7bqAtfJ0EZQV1WAzV/Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -42790,17 +42469,37 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.7': + resolution: {integrity: sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.5': + resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@faker-js/faker@8.4.1': - resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@faker-js/faker@10.6.0': + resolution: {integrity: sha512-3RQHgEtvL1Frl/d1cSreo7qhJ3Gk1OdNUai/CtZ8G+wYeRQnJih3s9xJ9/kgYekPQRdwgh0HXRPqMlzWGwivIQ==} + engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'} '@formatjs/ecma402-abstract@2.3.6': resolution: {integrity: sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==} @@ -42817,9 +42516,6 @@ packages: '@formatjs/intl-localematcher@0.6.2': resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - '@grpc/grpc-js@1.14.5': resolution: {integrity: sha512-7VZM+SVdEcUUqSQeNI3zM8Qs/BhQKZndPo2h5VkYkAM8Iz0wJIa8mKV5ekQGqG8UUsnkQ0NMxIxwkIHYvj0qOw==} engines: {node: '>=12.10.0'} @@ -42855,18 +42551,25 @@ packages: y-prosemirror: ^1.2.1 yjs: ^13.6.8 - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -42874,150 +42577,167 @@ packages: '@iconify/utils@3.0.2': resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} - '@img/colour@1.0.0': - resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-arm64@0.35.5': + resolution: {integrity: sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-x64@0.35.5': + resolution: {integrity: sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + '@img/sharp-freebsd-wasm32@0.35.5': + resolution: {integrity: sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.4': + resolution: {integrity: sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + '@img/sharp-libvips-darwin-x64@1.3.4': + resolution: {integrity: sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + '@img/sharp-libvips-linux-arm64@1.3.4': + resolution: {integrity: sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + '@img/sharp-libvips-linux-arm@1.3.4': + resolution: {integrity: sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + '@img/sharp-libvips-linux-ppc64@1.3.4': + resolution: {integrity: sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==} cpu: [ppc64] os: [linux] - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + '@img/sharp-libvips-linux-riscv64@1.3.4': + resolution: {integrity: sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==} cpu: [riscv64] os: [linux] - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + '@img/sharp-libvips-linux-s390x@1.3.4': + resolution: {integrity: sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + '@img/sharp-libvips-linux-x64@1.3.4': + resolution: {integrity: sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': + resolution: {integrity: sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + '@img/sharp-libvips-linuxmusl-x64@1.3.4': + resolution: {integrity: sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm64@0.35.5': + resolution: {integrity: sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm@0.35.5': + resolution: {integrity: sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==} + engines: {node: '>=20.9.0'} cpu: [arm] os: [linux] - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-ppc64@0.35.5': + resolution: {integrity: sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==} + engines: {node: '>=20.9.0'} cpu: [ppc64] os: [linux] - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-riscv64@0.35.5': + resolution: {integrity: sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==} + engines: {node: '>=20.9.0'} cpu: [riscv64] os: [linux] - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-s390x@0.35.5': + resolution: {integrity: sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==} + engines: {node: '>=20.9.0'} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-x64@0.35.5': + resolution: {integrity: sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-arm64@0.35.5': + resolution: {integrity: sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-x64@0.35.5': + resolution: {integrity: sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-wasm32@0.35.5': + resolution: {integrity: sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.5': + resolution: {integrity: sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==} + engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-arm64@0.35.5': + resolution: {integrity: sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-ia32@0.35.5': + resolution: {integrity: sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==} + engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-x64@0.35.5': + resolution: {integrity: sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} + '@interlace/eslint-devkit@1.19.8': + resolution: {integrity: sha512-zfxUG4xh3aumhHggmoYg6iIs/FBCXa9gFtWCReSSzlw38bp7OPaqj+cp5ggTrOaGs57Q0eJyULpYw2dcs946NA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@typescript-eslint/utils': ^7.0.0 || ^8.0.0 + eslint: ^8.40.0 || ^9.0.0 || ^10.0.0 + oxc-resolver: ^11.24.2 + typescript: '>=4.8.4' + peerDependenciesMeta: + '@typescript-eslint/utils': + optional: true + oxc-resolver: + optional: true + typescript: + optional: true '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -43035,100 +42755,101 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/console@30.5.2': + resolution: {integrity: sha512-e8sQC4pCMHPBrPX7Hk8TJr+DM5dkUnImSTNag8SEWFAFAF6xIz4AJvCKapnrdHnZxep4bxw4PhG+ZbimYBMyKw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/core@30.5.2': + resolution: {integrity: sha512-/jqvFWoJF7LV1a6AUpYMbMm+2yIYsHJfR474H0SCzr9k8tnO/jl9wRg6zSG6lxgf6EozNlCG4amFzWsbZSvvZA==} + 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/environment-jsdom-abstract@30.2.0': - resolution: {integrity: sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==} + '@jest/diff-sequences@30.5.0': + resolution: {integrity: sha512-OsqBjHXCn8cadasoAZBP6nWYvMsRhpMzGXTpxJ5aO04NlbdhIz+FVe3q49l0AwVhsz/cEmIpBes6gAFl1/dWQg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/environment-jsdom-abstract@30.5.2': + resolution: {integrity: sha512-8/P+8hKv7L4mhFoB6gpYLj/fuzXk8PWrde7TDHh8tJz5pE1ktlMbg0y6hDY/V8MfAnispFlPl/vPifowLy3JGQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: + '@types/jsdom': '*' canvas: ^3.0.0 jsdom: '*' peerDependenciesMeta: canvas: optional: true - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/environment@30.2.0': - resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==} + '@jest/environment@30.5.2': + resolution: {integrity: sha512-nwFPOUMbmsjNNRCpnJpB9HbSZu4C07wDDds++5j+j1MezzPLxMPDdbdUVjr2o4RULDOValnDd70taPFI1EtxAg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@30.5.2': + resolution: {integrity: sha512-d/HOLSrJUlBIl6n3LzOa7cjW3xdePm5H5gQw2lixZ/0h157l9sw3mLblzFqnPcTbhDzhRQdBOX3A3KcG73nm5Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@30.5.2': + resolution: {integrity: sha512-2E+1Pg6jJxbRjLNLpciC71iri/3qsKJL222/aXJEFwC0VdUSvfS+JZQQLEVjUYYc8t8pQu2MGE3cF2+bNTYRsg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@30.5.2': + resolution: {integrity: sha512-GKk0h0tKT5SpDPxDhPg3r9mm5s8/YCBzVNMOGdRiQXwUiMsjU10mVPlMaQstH6/cu50vOb8N9oQUMETHuwwxKw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/fake-timers@30.2.0': - resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==} + '@jest/get-type@30.5.0': + resolution: {integrity: sha512-9/2VUPitAjmBzbvDvqrxmvB7BzWsBW0WmkkojX1ODuxX1NLGxx9gfaZpHB0z8DtJ9uhGNmZG/VXBhf8uO0OV8Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/globals@30.5.2': + resolution: {integrity: sha512-62zfS+dL+M5aTNHXCNLyqD+j4oqxTIzDYrZbpqMP8Yn+gvlAGyzC6BSPNb1ZmFOakV1RtFYX/O3FCQXSWmQdgg==} + 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==} + '@jest/pattern@30.5.0': + resolution: {integrity: sha512-HdNQYSdRTEBNrginaqzQtTjG0HRMfrra/z6Ok7uL3S87vSlarIVohEsJsSj5edu3MiHoHjAkvPROz5ZjoKai+w==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/reporters@30.5.2': + resolution: {integrity: sha512-ev6E9iG73twQcfAfoTnviuYkr3yOrYbzAtMFCimv2fxHXPIp9PBt2u1wNMt0aYWgl8FPwIcS8oqRJg6alnht4Q==} + 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@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@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/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@30.5.0': + resolution: {integrity: sha512-/hunigyNpc4RCjC0VaW3f5RCUZVM2+WQ65qP7z083Gmvac7or2LI50XVNOtE4YPgBpV0yxYiAgorAPGniCoJmg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/snapshot-utils@30.5.1': + resolution: {integrity: sha512-V3wnxNtiVmw5PPVg433Cn3VdXnsOeu/ofLw3KC04Bn2y1wIlU5kozXQn48rhrgj/02LrCVtntTEF1yBha0XSUw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/source-map@30.5.2': + resolution: {integrity: sha512-c5CehvkbfHX6yyNg7bMn2ylqlp9AHXuZ/3hPH/Lh5bxD/vefd/lV9HBjMqXef9yQNqkdwyZvkLSVSwB38hy8Qw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-result@30.5.2': + resolution: {integrity: sha512-eO6YU5rsLfs60ne694e0IAmRgeBnoA8mu0nlxXDbl/1j5km0o2vO9/VbbUIKIH+WRKKEI+ELgwraRGn2Lhep8g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-sequencer@30.5.2': + resolution: {integrity: sha512-bmij8jZyYAC47ExT2GeP7PcrlwSNS+Bp3KeRuBH88gpcxqDv6fljN8PemS4J/lLZ79xb6mpaennQTTq0zUAVVg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/types@30.2.0': - resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} + '@jest/transform@30.5.2': + resolution: {integrity: sha512-LBGwmaE886C41jDZ65eqR1YbXM7642MK3ZhTowZd5+xDlrDLuf4ePuDdDmVSvcr8NTVJ3MqxLkMbUCzuigUaoQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/types@30.5.1': + resolution: {integrity: sha512-LvVYn83nnXPl+Rg98nvcFgjx6nRMTArhSn6RAX/w3ELn54S8A42TYZvsCMdGUqTM8S0wyXbtlQdU6Hi6dykj9g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jimp/bmp@0.16.13': @@ -43321,6 +43042,126 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/base64@17.67.0': + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@17.67.0': + resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@1.0.0': + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@17.67.0': + resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-core@4.80.0': + resolution: {integrity: sha512-qMKWshnyjbyhm+NbzqGE3w5y1mckFFEMj0aDPU2/JBNh1BzIjVy9esq9lBmRnNVmhMEkxwDzLZ8Gqh5G1P5Dag==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-fsa@4.80.0': + resolution: {integrity: sha512-ZBEKl7J6dbkRCfmrFV48Re211A/FHqniTUhsWCsaRteNSOqMgkX3qF1UreVgwB9oSPm81JLAwhIi6Lb/NH/PoA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-builtins@4.80.0': + resolution: {integrity: sha512-OIOIhqaWiwUySFMny4epIAoviXsyMaQQ63PTc3zH+5HEOvarl5hpUmZIhp2m5+OfyKAh5ylxXnQIgew1OgJDVw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-to-fsa@4.80.0': + resolution: {integrity: sha512-ljeaR5xwtX1EyRmB0wvXANUMQZ3mjKcm7z8s2N8D8SLQ04CcAGtUhHFRZQXFb9mhgFyEVMydQGQtSOFS7pcrFQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-utils@4.80.0': + resolution: {integrity: sha512-xwHeVVi3f+Khg/Fmb8i5qoYVmQ08QznE5TWhQokUmIZjz4KBPzU+zt/+bahBI6G1ghtqajt27lWuAciIxApuzA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node@4.80.0': + resolution: {integrity: sha512-yiBlUfkMMRFFGy8CD/h2zd5rPnrM6bjlF+nx2LRAxNV6hOSiuObQIUEE7m7y2VTMisjxCRtzINH94bFGySWL7g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-print@4.80.0': + resolution: {integrity: sha512-1ocZLJw/m/xlq0moaIHO7HV9nHRVBUvdc2zMzhsJGkFOrqfwWvexfCv5cYCPPLRhP+9p3yunoi4Ep5YhRORC9Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-snapshot@4.80.0': + resolution: {integrity: sha512-3AV23Q1H228KTtJKTUE0nNq8FCtxSvtENOLrEat80wkAJCKHuqQEv8yjhpS8Bei2OEFJAnluGXp9Ri2SWBlROw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@17.67.0': + resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@1.0.2': + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@17.67.0': + resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.9.0': + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@17.67.0': + resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@koa/cors@5.0.0': resolution: {integrity: sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==} engines: {node: '>= 14.0.0'} @@ -43370,8 +43211,8 @@ packages: '@mediapipe/tasks-vision@0.10.14': resolution: {integrity: sha512-vOifgZhkndgybdvoRITzRkIueWWSiCKuEUXXK6Q4FaJsFvRJuwgg++vqFUMlL0Uox62U5aEXFhHxlhV7Ja5e3Q==} - '@mermaid-js/parser@0.6.3': - resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==} + '@mermaid-js/parser@1.2.1': + resolution: {integrity: sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==} '@mixmark-io/domino@2.2.0': resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==} @@ -43409,6 +43250,76 @@ packages: cpu: [x64] os: [win32] + '@napi-rs/canvas-android-arm64@1.0.10': + resolution: {integrity: sha512-0sDMvme+7fj6bHERUaBs5SvEyWaORc91VUkaB4RrtG7p6dBrBNGy1of8cyEKDxygd1FlHtW+Thunj8lSixzY7A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/canvas-darwin-arm64@1.0.10': + resolution: {integrity: sha512-pdHL1TEfFMrnchRYqmPWXKN7hR4XtOYmzJqnh4XhpfWD4/eeSokOGVzrdFP/iQ3sfr2rf0939gOGq9uCp8BGmg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/canvas-darwin-x64@1.0.10': + resolution: {integrity: sha512-iuuk5plGxAcxurxv2ycF2yR20y5zvaBZ4heQdhPpg3EMFD21PhlY1V+YwSRmYRWzbvKL474UYdw3WIg2qfafyw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/canvas-linux-arm-gnueabihf@1.0.10': + resolution: {integrity: sha512-kH7GFR5Unpm77pKSEsmkqvzeQCRD7/MQ7upmeLLjg4XpQ62dX/R6THFsp6vkF1Pkco2aKUq9KhoLM4W5twdk7g==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/canvas-linux-arm64-gnu@1.0.10': + resolution: {integrity: sha512-0/Hj7IwM9pmzdwxiqkp4YLJ8dKqASBrWQ3Y7dWUSU/4dgvCL9O6YNvX7xVUJjonQvdD3IE9ESS/nXa5srQqoVw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/canvas-linux-arm64-musl@1.0.10': + resolution: {integrity: sha512-fmjKM0P2MLF9O6XzCQsRjhB+jlLzaf6tFQU36hMPMsYup+VThYvpjjhqNLOc/Ee3tHUE3r13H2BSJx/yXz4pFA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/canvas-linux-riscv64-gnu@1.0.10': + resolution: {integrity: sha512-O/BUrGwrs3pVP9PpD/3++ZiOpjHMJlmiB7aBgswP8rbe4egPfiFkFxmcCczoLvZa72TaQX5lJ8Udedb6rc/Hvg==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@napi-rs/canvas-linux-x64-gnu@1.0.10': + resolution: {integrity: sha512-48HkZPQeAN/R+9NPpY64tceoyCUW5xYYtHKZnC+BG11qiihXJCbH+xfbgGU+OdYp1Q4s84HDl9ILU0KBK6SBOQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/canvas-linux-x64-musl@1.0.10': + resolution: {integrity: sha512-QYHVi7WZ9v+Wm9OQyHLMTnJ8QiBPVX94BgbCHFJC/4bCFMfvX7fRzo4FJPgkRP0ISz3ulYNow/FCbQOPjzhYjg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/canvas-win32-arm64-msvc@1.0.10': + resolution: {integrity: sha512-bWK+YajM/8sL0mMgLtug2s063FVBPzFV4QAn987CQomMKlmzrBY6Trz43KY+24hq7IOa3qNhUAgP/XMEF50ZEQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/canvas-win32-x64-msvc@1.0.10': + resolution: {integrity: sha512-9WtzW85PaIhtB27iXaR/9RrLCqHLbqD3Z8Q+kh17NjFxwQXFXU5vWbYH4vEH+drM307TTyK3hidZgpt09G5T3g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/canvas@1.0.10': + resolution: {integrity: sha512-V+qptzsGnPMFxEbhwc6eDNMe5eDrfiBIp8qGpuRjAVIX4Kn2zxvwQ1Xco6Fwe+3tYIe3iLW8LM9D+SvjyJhqbQ==} + engines: {node: '>= 10'} + '@napi-rs/snappy-android-arm-eabi@7.3.3': resolution: {integrity: sha512-d4vUFFzNBvazGfB/KU8MnEax6itTIgRWXodPdZDnWKHy9HwVBndpCiedQDcSNHcZNYV36rx034rpn7SAuTL2NA==} engines: {node: '>= 10'} @@ -43519,10 +43430,21 @@ packages: '@napi-rs/wasm-runtime@1.0.7': resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + '@napi-rs/wasm-runtime@1.2.5': + resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} + '@noble/hashes@2.4.0': + resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} + engines: {node: '>= 20.19.0'} + '@nodable/entities@3.0.0': resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==} @@ -43538,15 +43460,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/fs@2.1.2': - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - '@npmcli/move-file@2.0.1': - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs - '@octokit/app@14.1.0': resolution: {integrity: sha512-g3uEsGOQCBl1+W1rgfwoRFUIR6PtvB2T1E4RpygeUU5LrLvlOqcxrt5lfykIeRpUPpupreGJUYl70fqMDXdTpw==} engines: {node: '>= 18'} @@ -44236,66 +44149,132 @@ packages: cpu: [arm64] os: [android] + '@parcel/watcher-android-arm64@2.6.0': + resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + '@parcel/watcher-darwin-arm64@2.5.1': resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] + '@parcel/watcher-darwin-arm64@2.6.0': + resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + '@parcel/watcher-darwin-x64@2.5.1': resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] + '@parcel/watcher-darwin-x64@2.6.0': + resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + '@parcel/watcher-freebsd-x64@2.5.1': resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] + '@parcel/watcher-freebsd-x64@2.6.0': + resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + '@parcel/watcher-linux-arm-glibc@2.5.1': resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + '@parcel/watcher-linux-arm-glibc@2.6.0': + resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + '@parcel/watcher-linux-arm-musl@2.6.0': + resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + '@parcel/watcher-linux-arm64-glibc@2.6.0': + resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + '@parcel/watcher-linux-arm64-musl@2.6.0': + resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + '@parcel/watcher-linux-x64-glibc@2.6.0': + resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + '@parcel/watcher-linux-x64-musl@2.6.0': + resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] + '@parcel/watcher-win32-arm64@2.6.0': + resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + '@parcel/watcher-win32-ia32@2.5.1': resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} engines: {node: '>= 10.0.0'} @@ -44308,23 +44287,92 @@ packages: cpu: [x64] os: [win32] + '@parcel/watcher-win32-x64@2.6.0': + resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + '@parcel/watcher@2.5.1': resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} + '@parcel/watcher@2.6.0': + resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} + engines: {node: '>= 10.0.0'} + '@pdf-lib/standard-fonts@1.0.0': resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} '@pdf-lib/upng@1.0.1': resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==} + '@peculiar/asn1-cms@2.10.0': + resolution: {integrity: sha512-CkX0H4NCIOMHOU3rh2xXZywinYZ/EnJlaOlJiGI0e5L4XjFqHf4iH30LMbXWChVppdA9ljbanjtzQFOhDNfTWg==} + engines: {node: '>=14'} + + '@peculiar/asn1-csr@2.10.0': + resolution: {integrity: sha512-jTPTr/9rxKM+niQLMF3jiAMb0lWHUhUHIuSOhdGCIfpB4FAQYf9SoiXOgxP8bS/68IB+bj+1OHvVnDVCQfVUZw==} + engines: {node: '>=14'} + + '@peculiar/asn1-ecc@2.10.0': + resolution: {integrity: sha512-GFd3iOjFrWX+QWH2R2dO5QSJyyRGv9CIBKtRlGlPNCvb2RvmCbBDexe91MJgV76c69d998Xsa+CvuQ98seoiPg==} + engines: {node: '>=14'} + + '@peculiar/asn1-pfx@2.10.0': + resolution: {integrity: sha512-1y3QK9ZH1IPleAMmRoJlPS10eGkAWnULETW8zDFNUK1ffqpG7zmDY+kYBMYQgwlcQZ2iitLm2z2EBP0xzRXpaA==} + engines: {node: '>=14'} + + '@peculiar/asn1-pkcs8@2.10.0': + resolution: {integrity: sha512-Ri+BZT9bnwqlHWmhs7lvWjvJRxKev2hA2+4EbZajgeYWCbR8hyv0znF4DhsFouOhMj2nSDV/iGJ6DMQtwITnCw==} + engines: {node: '>=14'} + + '@peculiar/asn1-pkcs9@2.10.0': + resolution: {integrity: sha512-XIXsbDQFezYk6fudczkuvawkRD4GNpISGCqfYhdkJlvcGF/RFknU+0DDJagOaJqBf+PdPzk4J9oMqDGcvfR9HQ==} + engines: {node: '>=14'} + + '@peculiar/asn1-rsa@2.10.0': + resolution: {integrity: sha512-4Jvmwlh3gZAhNZ4/u7JSyLuce9hofOFZ4o3PYKAccCImGnyaT5CMym/ATgvAvqpOYFNW531oPZvJlEBhJy9VfA==} + engines: {node: '>=14'} + + '@peculiar/asn1-schema@2.10.0': + resolution: {integrity: sha512-GhokD41lV4gQrrLYm3wCkHfBOnJrnhDMgt4XeMW8gzfE1UdJqIuSwsE+ggf82XBjUXRJylcm+KIGQFa4utIVLw==} + engines: {node: '>=14'} + + '@peculiar/asn1-x509-attr@2.10.0': + resolution: {integrity: sha512-/85GtKOKmgvuSJNlaFfwGWNdRSZZ+hpF02NyM01XiCdzpaZONiBltDyfluFPvFx966CR+ZHNSG1jniwpy07oGg==} + engines: {node: '>=14'} + + '@peculiar/asn1-x509@2.10.0': + resolution: {integrity: sha512-ucNVg8+ANveTpMN3fy9lA2alryONdXc2A4cEG2hMniWbvQt+YOZoe8BI80YYNO8FBcuDY1qbDQ4uQGQVraHxGA==} + engines: {node: '>=14'} + + '@peculiar/json-schema@1.1.12': + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + + '@peculiar/utils@2.0.3': + resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} + + '@peculiar/webcrypto@1.7.1': + resolution: {integrity: sha512-ODOov0sGMJMf3jPonOkgGqPknTsu+DdQ7kD++gz8aI+aFMOMHFbWAA2taqXXVTdP+OTOQR/znGvSpmkeI0WTYQ==} + engines: {node: '>=14.18.0'} + + '@peculiar/x509@1.14.3': + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + engines: {node: '>=20.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.56.1': - resolution: {integrity: sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==} - engines: {node: '>=18'} + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@playwright/test@1.63.0': + resolution: {integrity: sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==} + engines: {node: '>=20'} hasBin: true '@polar-sh/sdk@0.37.0': @@ -44388,29 +44436,26 @@ packages: '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@signpdf/placeholder-pdf-lib@3.2.6': - resolution: {integrity: sha512-3iSKYo796aZzmPWCubrc2iXRidkMctDUdP+VvZnuy1e2pjoUa1sxh3a4ohgidJsNOrtMXMwgFk6Q/Y+xQgKOWg==} + '@signpdf/placeholder-pdf-lib@3.3.0': + resolution: {integrity: sha512-DT1s617z88NvvCmo+z8jaz7lNzy7b7/fwo/movJGukpfSkl4FaLNRXIHNBCTRCP9TUb6F/axK1JulES/jY7mLQ==} engines: {node: '>=12', yarn: '>=1.22.18'} peerDependencies: pdf-lib: ^1.17.1 - '@signpdf/signer-p12@3.2.4': - resolution: {integrity: sha512-DTeYMj1DI30VYmaZXp2zZEg9YwVm3NmqjLF3q6ZxUwlOUSLLOUFkVafIs4YibTAGBmgjWKEMfmNCndK2ACLlzQ==} + '@signpdf/signer-p12@3.3.0': + resolution: {integrity: sha512-MLynYKgUBu29ojIueIDV34sIOFDFpP0s1gQORxCc0zhs1jfy0juqU2xQpjUayMbhzB4L0zS9dPwgHtok1f89Cg==} engines: {node: '>=12', yarn: '>=1.22.18'} peerDependencies: - node-forge: ^1.2.1 + node-forge: ^1.3.3 - '@signpdf/signpdf@3.2.5': - resolution: {integrity: sha512-mxGgVU+VkhCxNZ1eDGCmkE5zWFJExXPXn2myjrLcekHnJNpBKZr6WBrrznGOlLeDVAaiSVXjeysehgpZSJlJIA==} + '@signpdf/signpdf@3.3.0': + resolution: {integrity: sha512-/vy3dPTsTbLHdsKRarPQw8++UqN8GXxjEVnl4ZRl+o/zMWFqVb861RM5bxoRMGGMuPSvb1Rgt2lmVobEc0YUpw==} engines: {node: '>=12'} - '@signpdf/utils@3.2.4': - resolution: {integrity: sha512-6e7OZugRY6obyTbAKdj6yCIywCJqN0FDywsIrhkRnOTAKm4J3WVXq18NjzmE6iEXLknxok9EXNW/eVvY9Vp1gg==} + '@signpdf/utils@3.3.0': + resolution: {integrity: sha512-ArOP0MIhCfdChh1oZkog81TPeSY2e5TvHQmXJ682T4+SKb6Z609uAZhqMQZ9xm+YenEf/eNMSE5KVwU+EudXug==} engines: {node: '>=12', yarn: '>=1.22.18'} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sinclair/typebox@0.34.41': resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} @@ -44421,11 +44466,8 @@ packages: '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@sinonjs/fake-timers@13.0.5': - resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + '@sinonjs/fake-timers@15.4.0': + resolution: {integrity: sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==} '@sinonjs/text-encoding@0.7.3': resolution: {integrity: sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==} @@ -44438,6 +44480,10 @@ packages: resolution: {integrity: sha512-dLcOUxz8YCv1RZUMKq6GbyUf95pLbrqh34bPvpCZ1+CByFF31BEAFewZjsGCnVsZTKdThNENfGyAgk2TJqVwSw==} engines: {node: '>=18.0.0'} + '@smithy/core@3.35.1': + resolution: {integrity: sha512-i4YPS4B6ts7bjn7UwLnGjiZdprOvHvgGobFZsYK3GIY3E5hIqtj0rReU69BcTpGp+fvtraSNXeG1l+jtJvF55w==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.5.2': resolution: {integrity: sha512-A9uSdn72ozbRUSit0eib0TW7nXuNPlaeM0zcGkJ+nE6tFcSDbnmtwoxbTCFBukVQcszDAyvsd7+rTduPTXpygg==} engines: {node: '>=18.0.0'} @@ -44470,6 +44516,10 @@ packages: resolution: {integrity: sha512-CgB6HHWer/vrKps24ulRIbpcpb7K4xAU7SkZ7YHzBPlwHsvsrCJFEXK421s+cJzX+ZrqtA/TuU5w1HzI7k9N8A==} engines: {node: '>=18.0.0'} + '@smithy/types@4.19.0': + resolution: {integrity: sha512-r7jh49VJxGerfAcTQA6gXcKc+98zOp/tqRwzYjgOE+iSQsP6cEU1hq2QzbuipmP68QtYdY9wKEhiCQZIzHgZ4Q==} + engines: {node: '>=18.0.0'} + '@smithy/types@4.8.1': resolution: {integrity: sha512-N0Zn0OT1zc+NA+UVfkYqQzviRh5ucWwO7mBV3TmHHprMnfcJNfhlPicDkBHi0ewbh+y3evR6cNAW0Raxvb01NA==} engines: {node: '>=18.0.0'} @@ -44484,6 +44534,12 @@ packages: '@stablelib/base64@1.0.1': resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} + '@stylistic/eslint-plugin@5.10.0': + resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 + '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} @@ -44758,10 +44814,6 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -44781,6 +44833,9 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.10.4': + resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} + '@types/accepts@1.3.7': resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} @@ -44946,20 +45001,10 @@ packages: '@types/domhandler@2.4.5': resolution: {integrity: sha512-lANhC2grmFG1gBac/8sDAKdIXx+TzAdkJIAjEOSMA+qW3297ybACEbacJnG15aNYfrzDO6fdcoouokqAKsy6aQ==} - '@types/dompurify@3.2.0': - resolution: {integrity: sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==} - deprecated: This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed. - '@types/domutils@2.1.0': resolution: {integrity: sha512-5oQOJFsEXmVRW2gcpNrBrv1bj+FVge2Zwd5iDqxan5tu9/EKxaufqpR8lIY5sGIZJRhD5jgTM0iBmzjdpeQutQ==} deprecated: This is a stub types definition. domutils provides its own type definitions, so you do not need this installed. - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -44979,21 +45024,21 @@ packages: '@types/express-serve-static-core@4.19.7': resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} - '@types/express-serve-static-core@5.1.0': - resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} + '@types/express-serve-static-core@5.1.3': + resolution: {integrity: sha512-dPfW8NFiOF4wOHc7+N/QSxlY9cfSsenewGbAz8C8U/MULPd/YZ27LvJUIlzaXie7e6Ove9YunJGgC9tbHD2cKw==} '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + '@types/express@5.0.6': + resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} + '@types/fs-extra@9.0.13': resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -45018,9 +45063,6 @@ packages: '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/http-proxy@1.17.17': - resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} - '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -45030,8 +45072,8 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -45126,23 +45168,17 @@ packages: '@types/node-fetch@2.6.13': resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node-forge@1.3.14': - resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} '@types/node@18.19.130': resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - '@types/node@22.19.0': - resolution: {integrity: sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==} - '@types/node@24.13.6': resolution: {integrity: sha512-SGrw/h3KPFshy3OE6ZL53LMBG5vGQQ8/gIpiqz/kRZhPJ7HgwCEs8LBuNtWLa8dvGZVpSF7+Bf+c11HUrCb/yg==} - '@types/nodemailer@6.4.21': - resolution: {integrity: sha512-Eix+sb/Nj28MNnWvO2X1OLrk5vuD4C9SMnb2Vf4itWnxphYeSceqkFX7IdmxTzn+dvmnNz7paMbg4Uc60wSfJg==} + '@types/nodemailer@8.0.2': + resolution: {integrity: sha512-c7M5ox8p0nEOfbJ2E9Qcmt8/QCu/VzsiAhzBiZbvky2PhKZDHpKB3sQHBM5MEZNkCfBOaS6S9//AGPRTNB7IaA==} '@types/oauth@0.9.6': resolution: {integrity: sha512-H9TRCVKBNOhZZmyHLqFt9drPM9l+ShWiqqJijU1B8P3DX3ub84NjxDuy+Hjrz+fEca5Kwip3qPMKNyiLgNJtIA==} @@ -45174,9 +45210,6 @@ packages: '@types/pg@8.15.6': resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==} - '@types/plist@3.0.5': - resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} - '@types/png-chunks-extract@1.0.2': resolution: {integrity: sha512-z6djfFIbrrddtunoMJBOPlyZrnmeuG1kkvHUNi2QfpOb+JMMLuLliHHTmMyRi7k7LiTAut0HbdGCF6ibDtQAHQ==} @@ -45207,14 +45240,8 @@ packages: '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@types/retry@0.12.0': - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - - '@types/sanitize-html@2.16.0': - resolution: {integrity: sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==} - - '@types/semver@7.7.1': - resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/sanitize-html@2.16.2': + resolution: {integrity: sha512-kuAbgDCFv418flrp3z4o/4ufLA/5ovmXRH0L419iZCPGO7w00znjeDI5Wy/KZWNIBpDQc7hucCK+J5almB6FyA==} '@types/send@0.17.6': resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} @@ -45228,12 +45255,12 @@ packages: '@types/serve-static@1.15.10': resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + '@types/serve-static@2.2.0': + resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} + '@types/snappyjs@0.7.1': resolution: {integrity: sha512-OxjzJ6cQZstysMh6PEwZWmK9qlKZyezHJKOkcUkZDooSFuog2votUEKkxMaTq51UQF3cJkXKQ+XGlj4FSl8JQQ==} - '@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==} @@ -45270,9 +45297,6 @@ packages: '@types/uuid@8.3.4': resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - '@types/verror@1.10.11': - resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==} - '@types/web-push@3.6.4': resolution: {integrity: sha512-GnJmSr40H3RAnj0s34FNTcJi1hmWFV5KXugE0mYWnYhgTAHLJ/dJKAwDmvPJYMke0RplY2XE9LnM4hqSqKIjhQ==} @@ -45291,69 +45315,181 @@ packages: '@types/yargs@17.0.34': resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@8.71.1': + resolution: {integrity: sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.71.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/eslint-plugin@6.21.0': - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/parser@8.71.1': + resolution: {integrity: sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@6.21.0': - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/project-service@8.71.1': + resolution: {integrity: sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@6.21.0': - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@8.71.1': + resolution: {integrity: sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@6.21.0': - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/tsconfig-utils@8.71.1': + resolution: {integrity: sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@6.21.0': - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/type-utils@8.71.1': + resolution: {integrity: sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.71.1': + resolution: {integrity: sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@6.21.0': - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/typescript-estree@8.71.1': + resolution: {integrity: sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@6.21.0': - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/utils@8.71.1': + resolution: {integrity: sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@6.21.0': - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@8.71.1': + resolution: {integrity: sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.12.2': + resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.12.2': + resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} + cpu: [loong64] + os: [linux] + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} + cpu: [loong64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} + cpu: [arm64] + os: [openharmony] + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} + cpu: [x64] + os: [win32] + + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} '@vercel/webpack-asset-relocator-loader@1.10.0': resolution: {integrity: sha512-CCDqnX5Jt1hmwvUhpkKm4y8oK9Z4HyEtNPthxTp37WOllawyuAxDuNCAr2X6SmwOlFpcudNzIBvuDQ29MVQuCQ==} @@ -45458,6 +45594,10 @@ packages: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -45466,18 +45606,16 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + acorn-class-fields@1.0.0: resolution: {integrity: sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA==} engines: {node: '>=4.8.2'} peerDependencies: acorn: ^6 || ^7 || ^8 - acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} - peerDependencies: - acorn: ^8.14.0 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -45523,6 +45661,9 @@ packages: ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -45536,21 +45677,27 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - allure-js-commons@3.4.2: - resolution: {integrity: sha512-bWzqduvU/LzSTI4wJKzWbHWe64xluF30pDxFfSP+jlloQx9F1Vytdqrit5oAgNj+czzdA+Nocv3Dh6d4COCTvA==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + allure-js-commons@3.13.0: + resolution: {integrity: sha512-NC4qcbmfpuYTstdw+EgimzhpHD2T85wzBNWRMPpu9rukkLzRlLvSmUCo5hy6vEvwQd9BUQh2yMFplJ+shIpVrA==} peerDependencies: - allure-playwright: 3.4.2 + allure-playwright: 3.13.0 peerDependenciesMeta: allure-playwright: optional: true - allure-playwright@3.4.2: - resolution: {integrity: sha512-M2addk0XCD5mJW9GyuJ37lddxhQw9oqff+Z3hN8D4u73pJqKYOEkL4JwYbc9CPRq0l1OrakmMoJ+CtVF4ifaTg==} + allure-playwright@3.13.0: + resolution: {integrity: sha512-U9pLbm1+kTtGd+1Wqgb0wgsVTX730BdRc6tT0uQ8upzhEjsyjC2OnPCaMScXKPCv4uLWzORyem7d7cgnVz8fEA==} peerDependencies: - '@playwright/test': '>=1.53.0' + '@playwright/test': '>=1.62.0' ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} @@ -45612,18 +45759,12 @@ packages: peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - app-builder-bin@5.0.0-alpha.10: - resolution: {integrity: sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==} - - app-builder-lib@25.1.8: - resolution: {integrity: sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==} + app-builder-lib@26.15.3: + resolution: {integrity: sha512-2VnyWkqsP5v5XbBhL3tD5Syx8iNPBYsoU7kY4S2fz7wg8Rj/nztWKCUzGKaFRTv0Xwf3/H058CR1Kvtd/3lRow==} engines: {node: '>=14.0.0'} peerDependencies: - dmg-builder: 25.1.8 - electron-builder-squirrel-windows: 25.1.8 - - aproba@2.1.0: - resolution: {integrity: sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==} + dmg-builder: 26.15.3 + electron-builder-squirrel-windows: 26.15.3 archiver-utils@5.0.2: resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} @@ -45633,11 +45774,6 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} - are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -45699,13 +45835,9 @@ packages: asn1.js@5.4.1: resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} + asn1js@3.0.10: + resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} + engines: {node: '>=12.0.0'} async-exit-hook@2.0.1: resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} @@ -45754,6 +45886,9 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -45766,34 +45901,38 @@ packages: react-native-b4a: optional: true - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-jest@30.5.2: + resolution: {integrity: sha512-ES8WeJ2fNWPEDunyAtUfJ12nHyaWUloCHdkfK2oW5uSoQSUmjNKdWiGaXJITJwvFEWoD/evHEg/QoCXAvLaQqQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - '@babel/core': ^7.8.0 + '@babel/core': ^7.11.0 || ^8.0.0-0 - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + babel-plugin-istanbul@8.0.0: + resolution: {integrity: sha512-18wCskrN3DgbuBmp1gr7LBGT8xdz5xhQQqFvFhVxbkl8VBCrMKQ2YtqBWtUal1Zrc1HTuX0011+Brjw78TCFkg==} + engines: {node: '>=18'} - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-plugin-jest-hoist@30.5.0: + resolution: {integrity: sha512-gtGo1B+u14jrZQv6TdSWIWkTqclboo7Qn+dFAGUOIuXLFuJKAdg3U5MIWzZnW4vfUb4dX9skmAMiby86e/SF4A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} babel-preset-current-node-syntax@1.2.0: resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-preset-jest@30.5.0: + resolution: {integrity: sha512-ZGPn5ClP4lBDpuOK8W1yQIOy359HmbnZv3suucAlIe+SEE9yDsxV4S2PjSbH2Vc97U+WmzYD7vw3kr8NsQ/i6w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 || ^8.0.0 balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + bare-events@2.8.2: resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} peerDependencies: @@ -45845,15 +45984,9 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - block-stream2@2.1.0: resolution: {integrity: sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==} - bluebird-lst@1.0.9: - resolution: {integrity: sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==} - bluebird@3.4.7: resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} @@ -45876,6 +46009,10 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@2.3.0: + resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==} + engines: {node: '>=18'} + bonjour-service@1.3.0: resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} @@ -45898,6 +46035,10 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} + engines: {node: 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -45935,9 +46076,6 @@ packages: buffer-alloc@1.2.0: resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -45976,19 +46114,17 @@ packages: resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} - builder-util-runtime@9.2.10: - resolution: {integrity: sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==} - engines: {node: '>=12.0.0'} - - builder-util-runtime@9.3.1: - resolution: {integrity: sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==} + builder-util-runtime@9.7.0: + resolution: {integrity: sha512-g/kR520giAFYkSXTzcmF3kqQq7wi8F6N6SzeDgZrqTBN+VHdmgWOyTdD1yD7AATDId/yXLvuP34CxW46/BwCdw==} engines: {node: '>=12.0.0'} - builder-util@25.1.7: - resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==} + builder-util@26.15.3: + resolution: {integrity: sha512-q2hn7Mbo2nFNkVekPiHFx6Nfo3hURmES3tfBn+k5Pqxl2RkmP3QGqZUhH/q9Pch/4G05NRhPjDlVj1O8q4Txvw==} + engines: {node: '>=14.0.0'} - builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + bundle-name@4.1.1: + resolution: {integrity: sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==} + engines: {node: '>=18'} busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} @@ -45998,9 +46134,9 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} cache-content-type@1.0.1: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} @@ -46089,18 +46225,10 @@ packages: resolution: {integrity: sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==} engines: {node: '>= 0.6'} - cheerio@1.1.2: - resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==} + cheerio@1.2.0: + resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==} engines: {node: '>=20.18.1'} - chevrotain-allstar@0.3.1: - resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} - peerDependencies: - chevrotain: ^11.0.0 - - chevrotain@11.0.3: - resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -46109,9 +46237,9 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} @@ -46130,17 +46258,10 @@ packages: chromium-pickle-js@0.2.0: resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - ci-info@4.3.1: resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - cjs-module-lexer@2.2.1: resolution: {integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==} @@ -46152,18 +46273,6 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} - cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} @@ -46189,10 +46298,6 @@ packages: clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - co-body@6.2.0: resolution: {integrity: sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==} engines: {node: '>=8.0.0'} @@ -46239,10 +46344,6 @@ packages: resolution: {integrity: sha512-RxmjYxbWemV9gKu4zPgiZagUxbH3RQpEIO77XoSSX0ivgABDZ+h8Zuash/EMFLTI4N9QgFPOJ6JQpPZKFxa+dA==} engines: {node: '>=18'} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} @@ -46309,9 +46410,9 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression-webpack-plugin@10.0.0: - resolution: {integrity: sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==} - engines: {node: '>= 14.15.0'} + compression-webpack-plugin@12.0.0: + resolution: {integrity: sha512-LR4mS19Jqq41XfA3xVMLrtzVNzqJbUHdzPeLRfQoLiAS9s87f0021fDuU89xxVQFcB6d20ufBkv4j1rQ4OowHw==} + engines: {node: '>= 20.9.0'} peerDependencies: webpack: ^5.1.0 @@ -46332,39 +46433,40 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - config-file-ts@0.2.8-rc1: - resolution: {integrity: sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==} - connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} - connect-multiparty@2.2.0: - resolution: {integrity: sha512-zKcpA7cuXGEhuw9Pz7JmVCFmp85jzGLGm/iiagXTwyEAJp4ypLPtRS/V4IGuGb9KjjrgHBs6P/gDCpZHnFzksA==} - engines: {node: '>=0.10.0'} - deprecated: This package is archived and no longer maintained. For support, visit https://github.com/expressjs/express/discussions - consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} + content-disposition@1.1.0: + resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} + engines: {node: '>=18'} + content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} + content-type@2.1.0: + resolution: {integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==} + engines: {node: '>=18'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + cookie@0.7.1: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} @@ -46379,23 +46481,20 @@ packages: copy-to@2.0.1: resolution: {integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==} - copy-webpack-plugin@11.0.0: - resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} - engines: {node: '>= 14.15.0'} + copy-webpack-plugin@14.0.0: + resolution: {integrity: sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==} + engines: {node: '>= 20.9.0'} peerDependencies: webpack: ^5.1.0 core-js@3.46.0: resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} - core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} cose-base@1.0.3: @@ -46429,11 +46528,6 @@ packages: crc@3.8.0: resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -46514,8 +46608,8 @@ packages: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} - csv-parse@5.1.0: - resolution: {integrity: sha512-JL+Q6YEikT2uoe57InjFFa6VejhSv0tDwOxeQ1bVQKeUC/NCnLAAZ8n3PzowPQQLuZ37fysDYZipB2UJkH9C6A==} + csv-parse@7.0.3: + resolution: {integrity: sha512-YFd3QM/yo17vH91L1IOZuvl09zM0zEEtdfTcOCKWcMdM++MNaQSyp09slXyFCLaPXvHstQFx/xC8myiFHSMUvw==} csv-stringify@6.6.0: resolution: {integrity: sha512-YW32lKOmIBgbxtu3g5SaiqWNwa/9ISQt2EcgOq0+RAIFufFp9is6tqNnKahqE5kuKvrnYAzs28r+s6pXJR8Vcw==} @@ -46541,8 +46635,8 @@ packages: peerDependencies: cytoscape: ^3.2.0 - cytoscape@3.33.1: - resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + cytoscape@3.34.3: + resolution: {integrity: sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==} engines: {node: '>=0.10'} d3-array@2.12.1: @@ -46688,8 +46782,8 @@ packages: resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} engines: {node: '>=0.12'} - dagre-d3-es@7.0.13: - resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} @@ -46720,8 +46814,8 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + dayjs@1.11.23: + resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} debounce-fn@4.0.0: resolution: {integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==} @@ -46781,12 +46875,13 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + default-browser@5.5.1: + resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==} + engines: {node: '>=18'} defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} @@ -46796,9 +46891,9 @@ 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'} define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} @@ -46871,10 +46966,6 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff2html@3.4.52: resolution: {integrity: sha512-qhMg8/I3sZ4zm/6R/Kh0xd6qG6Vm86w6M+C9W+DuH1V8ACz+1cgEC8/k0ucjv6AGqZWzHm/8G1gh7IlrUqCMhg==} engines: {node: '>=12'} @@ -46911,14 +47002,8 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dmg-builder@25.1.8: - resolution: {integrity: sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==} - - dmg-license@1.0.11: - resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} - engines: {node: '>=8'} - os: [darwin] - hasBin: true + dmg-builder@26.15.3: + resolution: {integrity: sha512-O3zJUFUYHJKgzPqioHxfxzBzlSC1eXCSr79gMSBKBP5AgjjpmrydMsMLotEg9fAJF36vdUncb+4ndRNxoPdlSQ==} dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} @@ -46928,10 +47013,6 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - docx4js@3.3.0: resolution: {integrity: sha512-n+EGNivVW1IqUjkHDCLb7/w2mW47/23PqTbQN0V++WaCyYYMwjAKsDdhUt1TMB67/v5KQS4abkxab1uu4zCtIQ==} @@ -46953,6 +47034,10 @@ packages: dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-serializer@3.1.1: + resolution: {integrity: sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==} + engines: {node: '>=20.19.0'} + dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} @@ -46962,6 +47047,10 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + domelementtype@3.0.0: + resolution: {integrity: sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==} + engines: {node: '>=20.19.0'} + domhandler@2.4.2: resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} @@ -46973,11 +47062,15 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} + domhandler@6.0.1: + resolution: {integrity: sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==} + engines: {node: '>=20.19.0'} + dompurify@2.5.9: resolution: {integrity: sha512-i6mvVmWN4xo9LrhCOZrDgSs9noW6nOahbrmzjRbPF36YPyj5Ue5lgok0MHDWkG7xzpWFO2OYttXdzM7rJxHvNA==} - dompurify@3.3.0: - resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==} + dompurify@3.4.16: + resolution: {integrity: sha512-sqo+pNp3qRhCIpbgRi1y8Tgk27Bo2Ry7w0dC1NBeNTdZChWjz9Xb/KOoZbRP/R6pQZ80Qw8YhXw13hWWBbMRnQ==} domutils@1.5.1: resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==} @@ -46991,6 +47084,10 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + domutils@4.0.2: + resolution: {integrity: sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==} + engines: {node: '>=20.19.0'} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -47026,6 +47123,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -47050,13 +47150,13 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-builder@25.1.8: - resolution: {integrity: sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==} + electron-builder@26.15.3: + resolution: {integrity: sha512-a1KM5heqS3gQCZzizXEI8RjJy3QVogULPdeSknt76uLDpBIW/HDGsMg/XgP0riP6PI9COsRvFITKKGDqA8fJxA==} engines: {node: '>=14.0.0'} hasBin: true - electron-context-menu@4.1.1: - resolution: {integrity: sha512-kebXha4K2DmR7zrKpO8muzXlUAdhgqQIT7DpPeT4cAKZugwCB/NbuEuT+1SDjOH9vXJYjWK2UQuFvnVw0u0lHg==} + electron-context-menu@4.1.2: + resolution: {integrity: sha512-9xYTUV0oRqKL50N9W71IrXNdVRB0LuBp3R1zkUdUc2wfIa2/QZwYYj5RLuO7Tn7ZSLVIaO3X6u+EIBK+cBvzrQ==} engines: {node: '>=18'} electron-dl@4.0.0: @@ -47067,12 +47167,12 @@ packages: resolution: {integrity: sha512-8TjjAh8Ec51hUi3o4TaU0mD3GMTOESi866oRNavj9A3IQJ7pmv+MJVmdZBFGw4GFT36X7bkqnuDNYvkQgvyI8Q==} engines: {node: '>=18'} - electron-log@5.4.3: - resolution: {integrity: sha512-sOUsM3LjZdugatazSQ/XTyNcw8dfvH1SYhXWiJyfYodAAKOZdHs0txPiLDXFzOZbhXgAgshQkshH2ccq0feyLQ==} + electron-log@5.4.4: + resolution: {integrity: sha512-istWgaXjBfURBSS8LWVW9C3jsc6+ac+tY1lXrQEOTp0lVj+a4OlO1Tmqb36GgnEUDv92DGC9VI1HNXwJinWpgA==} engines: {node: '>= 14'} - electron-publish@25.1.7: - resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} + electron-publish@26.15.3: + resolution: {integrity: sha512-g/2bn8YTavY4cuS5F+jOS7zmZbXXBV8KZ8yHKfJjFPoKtzBqrpCdNPxBd3tqdBwP7BVd0lGzf7Bk2s0KesWZ4Q==} electron-squirrel-startup@1.0.1: resolution: {integrity: sha512-sTfFIHGku+7PsHLJ7v0dRcZNkALrV+YEozINTW8X1nM//e5O3L+rfYuvSW00lmGHnYmUjARZulD8F2V8ISI9RA==} @@ -47083,15 +47183,15 @@ packages: electron-to-chromium@1.5.366: resolution: {integrity: sha512-OlRuhb688YTCzzU3gXPLn6nGyd+F+53INE1qaKKlu6kETErE8FYsyDh0XqXEU+uBRn0MpCzz2vfNwORhkap8qg==} - electron-updater@6.6.2: - resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} + electron-updater@6.8.9: + resolution: {integrity: sha512-ZhVxM9iGONUpZGI1FxdMRgJjUFXi7AYGVa5PwKlO1tV1/4zDxQmfKpXOHVztKrd6L9rLcFjERvi1Mf2vxyTkig==} electron-windows-badge@1.1.0: resolution: {integrity: sha512-hWFbUk9u3fQHcKzTAcjZAN7XH9bL9oH9g20RRDU/DVDNqdMI03GzlBZfR/R8R1krYu9AT4biLqSCAxnt9LMAfA==} - electron@38.6.0: - resolution: {integrity: sha512-68OFNxJlrEStA+t8k5atzf4frJddvRR1N1oalr49Ll8YZ0+0nEsDhw4UNhTCoZKTjSYcxFF/4rt+sco+OlnB3g==} - engines: {node: '>= 12.20.55'} + electron@43.7.8: + resolution: {integrity: sha512-h9qnttBn9b+pmnJjagrpjvK97Wb9WbsyIB03BV6NnhnPqSq1Jw7500hNkqHPkosHCE0zL/806v4zf9d3VrII0w==} + engines: {node: '>= 22.12.0'} hasBin: true email-addresses@5.0.0: @@ -47143,9 +47243,6 @@ packages: encoding-sniffer@0.2.1: resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} @@ -47153,6 +47250,10 @@ packages: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.26.0: + resolution: {integrity: sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==} + engines: {node: '>=10.13.0'} + entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} @@ -47171,10 +47272,22 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + entities@8.1.0: + resolution: {integrity: sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==} + engines: {node: '>=20.19.0'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + envinfo@7.20.0: resolution: {integrity: sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==} engines: {node: '>=4'} @@ -47198,8 +47311,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} es-module-lexer@3.0.2: resolution: {integrity: sha512-BuIB67FngDSyQ/dpQNOZybwdEBDUGJQvOqwWr4ha/ufYiqzuEwPkKO2zLhRAgay28tStRIHUeWmszZAJo3GCOg==} @@ -47220,6 +47333,9 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + es-toolkit@1.52.0: + resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==} + es5-ext@0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} @@ -47288,32 +47404,18 @@ packages: peerDependencies: eslint: '>=6.0.0' + eslint-config-love@157.0.0: + resolution: {integrity: sha512-iyx9xq0tAwX+U3a6cJ6ZI8IyMtIwNlcZqF/gDBCDU88Of2WS4TvKKBvKC2CchcOdXoPpM4vNsfkx/p3SCsXBqw==} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' + eslint-config-prettier@8.10.2: resolution: {integrity: sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==} hasBin: true peerDependencies: eslint: '>=7.0.0' - eslint-config-standard-with-typescript@40.0.0: - resolution: {integrity: sha512-GXUJcwIXiTQaS3H4etv8a1lejVVdZYaxZNz3g7vt6GoJosQqMTurbmSC4FVGyHiGT/d1TjFr3+47A3xsHhsG+Q==} - deprecated: Please use eslint-config-love, instead. - peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.4.0 - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 - typescript: '*' - - eslint-config-standard@17.1.0: - resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 - eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -47326,17 +47428,11 @@ packages: eslint: optional: true - eslint-plugin-es@3.0.1: - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - - eslint-plugin-es@4.1.0: - resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} - engines: {node: '>=8.10.0'} + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '>=4.19.1' + eslint: '>=8' eslint-plugin-import@2.32.0: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} @@ -47344,77 +47440,79 @@ packages: peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - eslint-plugin-n@15.7.0: - resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} - engines: {node: '>=12.22.0'} + eslint-plugin-n@18.4.1: + resolution: {integrity: sha512-2sBReWOvCbzgkPri9M5SFmD5EbIwZLa1xz6B5RZsrI19WSFKpyx1sOMr+pdk8puCiXuEgCbErEHy1PuaUrc/4w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=8.57.1' + ts-declaration-location: ^1.0.6 + typescript: '>=5.0.0' + peerDependenciesMeta: + ts-declaration-location: + optional: true + typescript: + optional: true - eslint-plugin-node@11.1.0: - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} + eslint-plugin-promise@7.3.0: + resolution: {integrity: sha512-6uGiOR0INuujr6PEQmeSSP7GbIMJ/ebEXXiEzb/nOj68LknH5Pxzb/AbZivmr6VE6TkTE8rTjRK9zhKpK6HsRA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=5.16.0' + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-promise@6.6.0: - resolution: {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-plugin-secure-coding@5.4.16: + resolution: {integrity: sha512-9i2gGl0/ZgLm1T9MwKYSayvt1RmVIwA3EZJv2VDQNpN9aPdnGxIS3Ilxt2ModA3LUMUFIZqefMx0snjz/jn1oQ==} + engines: {node: '>=18.0.0'} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint: ^8.40.0 || ^9.0.0 || ^10.0.0 + recheck: ^4.5.0 + peerDependenciesMeta: + recheck: + optional: true - eslint-plugin-svelte@2.46.1: - resolution: {integrity: sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==} - engines: {node: ^14.17.0 || >=16.0.0} + eslint-plugin-svelte@3.23.0: + resolution: {integrity: sha512-n9jRklDqy0+W834568a4ZIZTK7DHXxvvHHxxGP8nNq7N//pOZMubttskHOquyGgfTR4Z05q2NdGNlsTpIEA48w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + eslint: ^8.57.1 || ^9.0.0 || ^10.0.0 svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: svelte: optional: true - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - - eslint-utils@3.0.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.5: + resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true esniff@2.0.1: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} engines: {node: '>=0.10'} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -47429,10 +47527,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -47486,13 +47580,13 @@ packages: exif-parser@0.1.12: resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + exit-x@0.2.2: + resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} engines: {node: '>= 0.8.0'} - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect@30.5.2: + resolution: {integrity: sha512-0LNuMvs8/5mRYhnCR4k+lGV7fqPMs6Bnksda4S3zsCUmdxBpAn4zU4NNzXdq1pMKe/H4W5t/zVIDSJ/H3e0vDA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} @@ -47501,8 +47595,8 @@ packages: resolution: {integrity: sha512-wxUJn2vTHvj/kZCVmc5/bJO15C7aSMyHeuXYY3geKpeKibaAoQGcEv5+sM6nHS2T7VF+QHS4hTWPiY2mKofEdg==} engines: {node: '>=12.0.0'} - express-form-data@2.0.23: - resolution: {integrity: sha512-Efm2t+xL6vEqUPs4kAyBY9xG/8LGpbSVnnFLZw6HgdxHzSRlg2/sNlA2UdMlcIKMH+LDOn7NKXUDGJK125F4rw==} + express-form-data@3.0.1: + resolution: {integrity: sha512-olpFQnvwnQPUoE48X0eiv7WJDThAXS2jnFuhkViDkTECKdEFH+Vga3wghVyCbX67otcRziJb5qmJBEHi1EDm3A==} engines: {node: '>=10.7.0'} express-rate-limit@7.5.1: @@ -47518,6 +47612,10 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} + engines: {node: '>= 18'} + exsolve@1.0.7: resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} @@ -47535,15 +47633,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - - extsprintf@1.4.1: - resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} - engines: {'0': node >=0.6.0} - fast-copy@3.0.2: resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} @@ -47586,6 +47675,9 @@ packages: resolution: {integrity: sha512-TBw6K/fxoQGGjCmZDw9w/ZwP3uDcnTM4YH/g+PFRWr8sbe5idXtxNN6vITh4+1ruCZaho6uBFurElsA7F0zzgw==} hasBin: true + fastdom@1.0.12: + resolution: {integrity: sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==} + fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -47593,15 +47685,17 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - faye-websocket@0.11.4: - 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==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} @@ -47616,9 +47710,9 @@ packages: file-api@0.10.4: resolution: {integrity: sha512-RVBXJGmsnQxokdpy264pmsdBjbUuxE6QT2xxhOrO2pzwTetbTNoWVFgkONFWmopm5mellsXrQIQhMY9fjufi9g==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} file-error@0.10.2: resolution: {integrity: sha512-hJsQ7sEz6dM4vuRS7cipKiixV6EymEXHe+TCf2XVWsGTOehzrmcqqKMgeYTmV24XhjWSj+pQj1e5yjPJ7DtQvw==} @@ -47661,6 +47755,10 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} + find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -47673,9 +47771,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} @@ -47721,8 +47819,8 @@ packages: resolution: {integrity: sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==} engines: {node: '>= 0.12'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.6: + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} engines: {node: '>= 6'} formdata-node@4.4.1: @@ -47753,10 +47851,18 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} + fs-extra@11.3.1: + resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==} + engines: {node: '>=14.14'} + fs-extra@11.3.2: resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} engines: {node: '>=14.14'} @@ -47769,21 +47875,12 @@ packages: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs-monkey@1.1.0: resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -47799,11 +47896,6 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - gaxios@5.1.3: resolution: {integrity: sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==} engines: {node: '>=12'} @@ -47885,22 +47977,24 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob-to-regex.js@1.3.1: + resolution: {integrity: sha512-zhWhMRsgnOym+1txhUmYJGD6eUsbUdrZv55gCYKuJX8t2p3+M8My23PD09bEIsreGUs5pnSa/idmcfp2/IlqGg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-agent@3.0.0: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} @@ -47908,14 +48002,18 @@ packages: global@4.4.0: resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} globals@15.15.0: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -47924,9 +48022,8 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} google-auth-library@8.9.0: resolution: {integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==} @@ -47961,9 +48058,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-binding@2.5.2: resolution: {integrity: sha512-CUDidmx/Ql6bB3Jz9owZK4TlSfD58/dJEXeGVPn6Zl0qrLjxZI+jhovxYw4ArU6cLG/NdadsSg62PlR1M6+reg==} hasBin: true @@ -48005,11 +48099,8 @@ packages: hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + handlebars@4.7.10: + resolution: {integrity: sha512-P5VJMVM7qgBn6vjXMw8WG9uVI+ncf2pi72j4de4yz5ZULLj2RGqLYaKOYGsgyrViQ0tePOVlN1tDCCXXtFqXKg==} engines: {node: '>=0.4.7'} hasBin: true @@ -48036,9 +48127,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hash-it@6.0.0: resolution: {integrity: sha512-KHzmSFx1KwyMPw0kXeeUD752q/Kfbzhy6dAZrjXV9kAIXGqzGvv8vhkUqj+2MGZldTo0IBpw6v7iWE7uxsvH0w==} @@ -48046,6 +48134,10 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -48073,9 +48165,6 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} - hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - hpagent@0.1.2: resolution: {integrity: sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==} @@ -48083,9 +48172,6 @@ packages: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} - html-entities@2.6.0: - resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -48114,8 +48200,12 @@ packages: resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} engines: {node: '>=8.0.0'} - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} + + htmlparser2@12.0.0: + resolution: {integrity: sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw==} + engines: {node: '>=20.19.0'} htmlparser2@3.10.1: resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} @@ -48126,9 +48216,6 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - htmlparser2@9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} - http-assert@1.5.0: resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} engines: {node: '>= 0.8'} @@ -48136,17 +48223,6 @@ packages: http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - - http-errors@1.7.3: - resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} - engines: {node: '>= 0.6'} - http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} @@ -48155,29 +48231,17 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-parser-js@0.5.10: - resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} - - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} - http-proxy-middleware@2.0.9: - resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} + http-proxy-middleware@4.2.0: + resolution: {integrity: sha512-ZA+oNOoM+GLoFTIzhkJptVQov73Srep2LBqhF8hG8CIPKO3nam1jonXVQ/QUH8RbwsmaaVz2SOJdzBNBHNtKbw==} + engines: {node: ^22.15.0 || ^24.0.0 || >=26.0.0} http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} @@ -48195,6 +48259,9 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + httpxy@0.5.5: + resolution: {integrity: sha512-uDjmnPyp1q4Sgzf3w+J/Fc6UqcCEj0x4Wjp7OqK5dGhNeDgpyrAmnS6ey8QWrX3SWDon2DMKf9sBa5X9+CVyMA==} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -48202,10 +48269,9 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - iconv-corefoundation@1.1.7: - resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} - engines: {node: ^8.11.2 || >=10} - os: [darwin] + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -48215,6 +48281,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} + icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -48228,12 +48298,16 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.12: + resolution: {integrity: sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==} + engines: {node: '>= 4'} + image-q@4.0.0: resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} - image-size@1.2.1: - resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} - engines: {node: '>=16.x'} + image-size@2.0.4: + resolution: {integrity: sha512-QRUkFFsRV/6fuESxb9Vkq+a0LkSrgKXuc2NEqfikiXxxN/G3tjWt5EVUlMaImRBZRZK/jRBEbYvpPYZL8t08Zw==} + engines: {node: '>=18'} hasBin: true immediate@3.0.6: @@ -48263,9 +48337,6 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - inflation@2.1.0: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} @@ -48274,9 +48345,6 @@ packages: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -48318,6 +48386,10 @@ packages: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} + ipaddr.js@2.5.0: + resolution: {integrity: sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==} + engines: {node: '>= 10'} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -48351,10 +48423,6 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - is-class-hotfix@0.0.6: resolution: {integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==} @@ -48370,9 +48438,9 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true is-extglob@2.1.1: @@ -48414,12 +48482,14 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} @@ -48429,6 +48499,10 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} + is-network-error@1.3.2: + resolution: {integrity: sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==} + engines: {node: '>=16'} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -48441,17 +48515,13 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} @@ -48468,6 +48538,9 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -48512,10 +48585,6 @@ packages: is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - is-unsafe@2.0.2: resolution: {integrity: sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==} @@ -48531,9 +48600,9 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -48552,6 +48621,14 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.5: + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} + engines: {node: '>=18'} + + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} + isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -48570,10 +48647,6 @@ packages: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - istanbul-lib-instrument@6.0.3: resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} @@ -48582,8 +48655,8 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} istanbul-reports@3.2.0: @@ -48601,17 +48674,17 @@ packages: engines: {node: '>=10'} hasBin: true - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-changed-files@30.5.1: + resolution: {integrity: sha512-0+bvMM/ENhDI29Z8q1r4HxiDIi4G5tnBmSw4esfPQoj9q8Nik7KIyuxHkTVnnniJQf05SxpGaKDQ+4h28ynGPg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-circus@30.5.2: + resolution: {integrity: sha512-vffFgjs5JSJ9q4ds1vNW3klKYPJfYfIY61LT/zaZgvTeASJOWZUt8LBfHgIcV4rwxlPBLl/ePBGccHEclS4PlQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-cli@30.5.2: + resolution: {integrity: sha512-YYYxUUVjFgPvgEleKNKMaYGIFgR3l3832Cl0kRL/oCiDZ03v7wImUtquHl2OOBCCNgprjZgBN5bczS/JklPBDg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -48619,32 +48692,35 @@ packages: node-notifier: optional: true - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-config@30.5.2: + resolution: {integrity: sha512-U6221OZekabePvGcGPf4raIBKMvYQWFHvhobDJRojOYaFMj2HaGytAdknjDhYc6JTz2fdHW9+6k0wWUDaNeOFQ==} + 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@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@30.5.2: + resolution: {integrity: sha512-rBtHnI6BWTiWj3lM7fOLVfChx7R9B0u9VV3PRHawKs79x6ZjW1QoSrKenaigNGWlvhtoi2BqvDbABDie+Os3xQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@30.5.0: + resolution: {integrity: sha512-NwDqcxtoZi33RhuW+zJS/RVA3rmheQ8BnwpYZuc/Eruaz6seQb7+aoCeDZu/3X7W2XmD8DbSo9Pn72DbKsBFYw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-each@30.5.2: + resolution: {integrity: sha512-GRrW+7fmmgmkvyfEBqc1QFdWnF1Ex5yG6Y6AWL4TTxnkWlKIT98dsKh3P3UuWm6v4XsQwVE6DEzXIPMzWJ3ZbA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-environment-jsdom@30.2.0: - resolution: {integrity: sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ==} + jest-environment-jsdom@30.5.2: + resolution: {integrity: sha512-6NOZjEP+WNi4WXjbxb/1ROnfaMxn6Dhqu6uSC22o0H28z+uppejs/jZ9KCVoLepqqoCjcNZujtzQqC9jSV15jg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -48652,109 +48728,80 @@ packages: canvas: optional: true - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@30.5.2: + resolution: {integrity: sha512-Ciz4KgTGIbojxSKpuFImgWJj5EyqfE8xMq9NxWmOXnQywHHS03H9Mv+vaCB29J5pr3JBrY27WbRV18rBdjh8Dg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-fetch-mock@3.0.3: resolution: {integrity: sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==} - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@30.2.0: - resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==} + jest-haste-map@30.5.1: + resolution: {integrity: sha512-VIFgt67jW480YDxKfEv9IYQKrFpYt7bOCMn3VsnjK7AK9qo7p6acpnA1DHwsVOULE3dTaYew/6JaTD/d0VDHoQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@30.2.0: - resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==} + jest-leak-detector@30.5.1: + resolution: {integrity: sha512-gt4GT2aWgEoCNTcBe4rqS74xTIUJxi+UD9SNSu9aOk5LmTEd6fS5KSTmAKAfitCCktQHNN+upUuL6EkBfFbMDQ==} 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-matcher-utils@30.5.2: + resolution: {integrity: sha512-lFkB365PTIHOhPzwrb9T6gvlDnPpOZ7/c3ewOKKB7bzztqjVrtlyRL2MkyfJXpyY2u2SKw001JKrTx14fBUFcQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@30.5.1: + resolution: {integrity: sha512-UdQlLdd9wL/Ys7xRErckqwD6wPlSZYueosSWuHc1r2ztGLwlgPvtSJq2+BPEgaEY13WLvfFbmhTj8pba0Sd1jg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-regex-util@30.0.1: - resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} + jest-mock@30.5.2: + resolution: {integrity: sha512-KTHb37Fhj8xY8qPFvTFaFJHcdsumQp+ExsUlgoX232Agmc706gagBs53+CYvulV7MVQo9AgXOUxsqzzVBoJlrA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-regex-util@30.5.0: + resolution: {integrity: sha512-Mg0WK7A6xRHLSA1udJ8y9f3lM0uUhFTBnLKzwPmqB9AylvpleJ6BLemR8K9dK27DY+cesDryoA7yLZCAHsPG1A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@30.5.2: + resolution: {integrity: sha512-GMI0DP5enX9Z2qW2zFy1bOkrCfWAOPRJQ7qHt0pdfrxBPsgWxglMPrRSK2TX/wRWYxcPRSLFg3Z88qPOzHx7FQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve@30.5.1: + resolution: {integrity: sha512-wprhLejRtwN6h8ZgaqC0eYjGJ1uMdGPT/+b3eFncbG4NWuuP9QL+vWwRinu9waw7hkOLcpMJGVJAMgBwsPssMQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runner@30.5.2: + resolution: {integrity: sha512-/B6px7hiiNhVSRwuv9AGn0nawYvwsHeQZ3ItTd5Gp2diFd0EOKaWVeWqcbw3L88vx1GfpCKjQkxWItZCTl11Rw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runtime@30.5.2: + resolution: {integrity: sha512-0paUAHBlheai10A3XSy9Xh+YBG0IROy+/qzcDPzQ/nbbXrznQzeWy5qniICWK6d3W3scaRQCVAbXdcK0ibBq4w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-snapshot@30.5.2: + resolution: {integrity: sha512-jKIdes25AnAH73dOCi2qE6J6vHJ6L2vyBS11M89kT50DVJcLTf2AOjvcc+2vVaN8lUbY5v2R83aqXo3Ro9fqYA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-util@30.2.0: - resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==} + jest-util@30.5.1: + resolution: {integrity: sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@30.5.1: + resolution: {integrity: sha512-i/buJ56wTpxihE93hQYNMfdOThS87+HGvLZzZJmU4xggPcdTYQq051iwALLCHp3q+SkCGH+EFejQZz5EbBSkkg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-watcher@30.5.2: + resolution: {integrity: sha512-rqRgg4R11GA9m1UsEZwQeixHsgZReCn6TOHAHtIH33yXrIvoX0OGPA20Yzzjkz7X40fZvcRSxEpQppYPcWzmcQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@30.5.1: + resolution: {integrity: sha512-Cbxh5v7AoLuFRmFJSM4/aHdQ68rjXvUWr716EE0Dh3I7T+T/3FgFKhOERGXHcU2Meftq9+9zxPM3TSNyI9D+HA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest@30.5.2: + resolution: {integrity: sha512-3gnpdBIza8ijCl3iMV9ChE3hSt1+46865qqod863gQtJr1DixOkAU5DoGbi3u+XlRcw++BhZQMu/y4xBdHBvSQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -48769,6 +48816,10 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + jose@4.15.9: resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} @@ -48794,8 +48845,12 @@ packages: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} + hasBin: true + + js-yaml@5.4.3: + resolution: {integrity: sha512-yzzNtgczwgoVHNigCyKTXcQJU4Y8t/ikU4UxXW0BvrLfHTGWZhsNcOT2s/a7vn81/4KqVnNmHjaUEPlvWnNwVw==} hasBin: true jsdom@26.1.0: @@ -48888,6 +48943,10 @@ packages: resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==} hasBin: true + katex@0.16.47: + resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} + hasBin: true + keygrip@1.1.0: resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} @@ -48903,16 +48962,12 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - known-css-properties@0.35.0: - resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} + known-css-properties@0.37.0: + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} koa-bodyparser@4.4.1: resolution: {integrity: sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==} @@ -48948,12 +49003,11 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - langium@3.3.1: - resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} - engines: {node: '>=16.0.0'} + launch-editor@2.14.2: + resolution: {integrity: sha512-NHJEb30MGBCkmZXLZwz25t37QR4aY03ZzPYUJXOJaOa92uWwExI9SBQUuIznBYc1xkD7cJNGX7oc3Nl3sq2kQQ==} - launch-editor@2.12.0: - resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} + launder@1.7.2: + resolution: {integrity: sha512-DLg3HPnHUfBi5/MxMLmJD12dmlMpFEC2HgMW6vkZ/9JR0RU00kXoRGvDxAvFmdO0o610OA77i4FgNTLucmhDVg==} layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} @@ -49030,10 +49084,6 @@ packages: load-bmfont@1.4.2: resolution: {integrity: sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==} - loader-runner@4.3.1: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} - engines: {node: '>=6.11.5'} - loader-utils@1.4.2: resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} engines: {node: '>=4.0.0'} @@ -49165,10 +49215,6 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - logform@2.7.0: resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} @@ -49207,10 +49253,6 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - machina@7.0.1: resolution: {integrity: sha512-0Xkgs8NeBvO2hW6bjJT8ewLWrMfh1haMPstaghpASWjXkLjRhtDiaJG1Kb7mslaOHxZYxpH7PIjpmirRVYbMMA==} engines: {node: '>=22.22'} @@ -49228,13 +49270,6 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - mammoth@1.11.0: resolution: {integrity: sha512-BcEqqY/BOwIcI1iR5tqyVlqc3KIaMRa4egSoK83YAVrBf6+yqdAAbtUcFDCWX8Zef8/fgNZ6rl4VUv+vVX8ddQ==} engines: {node: '>=12.0.0'} @@ -49285,6 +49320,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + media-typer@1.1.1: + resolution: {integrity: sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==} + engines: {node: '>= 0.8'} + mem@4.3.0: resolution: {integrity: sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==} engines: {node: '>=6'} @@ -49293,12 +49332,19 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} + memfs@4.80.0: + resolution: {integrity: sha512-N70W2isi44XdGn7uPo9NJ4zRukcdkwSFHlnYx42SWOH/+hzqNc8P7+tVoA2up4z7faHvNi1RSNCFjxoYQ71VPQ==} + memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -49306,8 +49352,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - mermaid@11.12.1: - resolution: {integrity: sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g==} + mermaid@11.17.2: + resolution: {integrity: sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg==} methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} @@ -49329,6 +49375,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -49376,21 +49426,20 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + minimatch@5.1.6: 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'} @@ -49398,45 +49447,72 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimizer-webpack-plugin@5.13.0: + resolution: {integrity: sha512-OO1NF2zHj6sf4CNv2AsUWYcS8WEwkVKQDXxxKzlOxx1Xl+WlqYtVC+oNlGNwGkLAOnpj277BSHypWwRtd9w4JQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@minify-html/node': '*' + '@napi-rs/image': '*' + '@swc/core': '*' + '@swc/css': '*' + '@swc/html': '*' + clean-css: '*' + cssnano: '*' + csso: '*' + esbuild: '*' + html-minifier-terser: '*' + imagemin: '*' + lightningcss: '*' + postcss: '*' + sharp: '*' + svgo: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@minify-html/node': + optional: true + '@napi-rs/image': + optional: true + '@swc/core': + optional: true + '@swc/css': + optional: true + '@swc/html': + optional: true + clean-css: + optional: true + cssnano: + optional: true + csso: + optional: true + esbuild: + optional: true + html-minifier-terser: + optional: true + imagemin: + optional: true + lightningcss: + optional: true + postcss: + optional: true + sharp: + optional: true + svgo: + optional: true + uglify-js: + optional: true + minio@8.0.7: resolution: {integrity: sha512-E737MgufW8CeQAsTAtnEMrxZ9scMSf29kkhZoXzDTKj/Jszzo2SfeZUH9wbDQH2Rsq6TCtl/yQL0+XdVKZansQ==} engines: {node: ^16 || ^18 || >=20} - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} minizlib@3.1.0: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} @@ -49505,8 +49581,8 @@ packages: socks: optional: true - morgan@1.10.1: - resolution: {integrity: sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==} + morgan@1.12.1: + resolution: {integrity: sha512-tljKC0ex20AjO58Ob/eZ53JloycbVswbVNCHx6V6VLGzqt/w8dIynVGL0G8qVjNKwiA7sYSogCrN6QtJ82IV+g==} engines: {node: '>= 0.8.0'} mri@1.2.0: @@ -49541,11 +49617,16 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -49557,6 +49638,10 @@ packages: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} + negotiator@1.1.0: + resolution: {integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==} + engines: {node: '>=18'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -49569,16 +49654,13 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.80.0: - resolution: {integrity: sha512-LyPuZJcI9HVwzXK1GPxWNzrr+vr8Hp/3UqlmWxxh8p54U1ZbclOqbSog9lWHaCX+dBaiGi6n/hIX+mKu74GmPA==} - engines: {node: '>=10'} + node-abi@4.36.0: + resolution: {integrity: sha512-zrvE1Qy5ElbZVqmJFSiNfwzNZzUCepasgp/4dw0Z0fsn40LJkAk9FA9oMh2SKMeNFRRe/3IfeOKvWwWr8u4SmQ==} + engines: {node: '>=22.12.0'} node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-addon-api@1.7.2: - resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} - node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} @@ -49603,8 +49685,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + node-forge@1.4.0: + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} engines: {node: '>= 6.13.0'} node-gyp-build-optional-packages@5.2.2: @@ -49615,9 +49697,9 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-gyp@9.4.1: - resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} - engines: {node: ^12.13 || ^14.13 || >=16} + node-gyp@12.4.0: + resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true node-int64@0.4.0: @@ -49641,24 +49723,24 @@ packages: resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==} engines: {node: '>=18'} - nodemailer@6.10.1: - resolution: {integrity: sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==} + nodemailer@9.1.1: + resolution: {integrity: sha512-izw9mVKFix6YSnC9eLgV6g1opl9DUlRio9ZNcq+Wu9Ujn2UwF+8Nl0B8nz22kEC+CTZCvinkxwJ0DeFbb6NwcQ==} engines: {node: '>=6.0.0'} nopt@1.0.10: resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} hasBin: true - nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -49679,11 +49761,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - nth-check@1.0.2: resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} @@ -49740,15 +49817,12 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - octokit@3.2.2: resolution: {integrity: sha512-7Abo3nADdja8l/aglU6Y3lpnHSfv0tw7gFPiqzry/yCU+2gTAX7R1roJ8hJrxIK+S1j+7iqRJXtmuHJ/UDsBhQ==} engines: {node: '>= 18'} - oembed-providers@1.0.20260106: - resolution: {integrity: sha512-u1mNQgfTuuY3ydQDN7G7MnlCVlqM5fhgVxNc6VQTnEIq/OkLPtBaFK0ADvkRciVNLEa/j925jUR30kFVHN2WtQ==} + oembed-providers@1.0.20260604: + resolution: {integrity: sha512-/eSnxfKGDs35gyiPSepvxPNCRo4lV5WzTXmi527lfupMDmxi51k1HcRub/RJyqwUSc2ojsCyrh91M+NwESb+DQ==} oidc-token-hash@5.2.0: resolution: {integrity: sha512-6gj2m8cJZ+iSW8bm0FXdGF0YhIQbKrfP4yWTNzxc31U6MOjfEmB1rHvlYvxI1B7t7BCi1F2vYTT6YhtQRG4hxw==} @@ -49757,10 +49831,6 @@ packages: omggif@1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -49782,9 +49852,9 @@ packages: only@0.0.2: resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + open@11.0.4: + resolution: {integrity: sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==} + engines: {node: '>=20'} openai@4.104.0: resolution: {integrity: sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==} @@ -49812,10 +49882,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} @@ -49870,17 +49936,13 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - p-queue@7.3.4: resolution: {integrity: sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==} engines: {node: '>=12'} - p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} + p-retry@8.0.1: + resolution: {integrity: sha512-NAigyu8hfvJe7MsS18mnc4is0MZtau3QMdBklaJKK23oBQb6occO3UPM3vHmTckW8KhfyjMZaUOqdTFEYliHgg==} + engines: {node: '>=22'} p-timeout@4.1.0: resolution: {integrity: sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==} @@ -50016,12 +50078,19 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-to-regexp@8.4.2: + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -50035,13 +50104,9 @@ packages: pdf-lib@1.17.1: resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==} - pdfjs-dist@2.12.313: - resolution: {integrity: sha512-1x6iXO4Qnv6Eb+YFdN5JdUzt4pAkxSp3aLAYPX93eQCyg/m7QFzXVWJHJVtoW48CI8HCXju4dSkhQZwoheL5mA==} - peerDependencies: - worker-loader: ^3.0.8 - peerDependenciesMeta: - worker-loader: - optional: true + pdfjs-dist@6.2.108: + resolution: {integrity: sha512-YxFb+SQcodN2rnX9Tn3dHYlqfb7NjlzzfONPpJd+AKoKtUjEdevTfbC07d5TcczzOK6261auRkP/M8OBHs9vFQ==} + engines: {node: '>=22.13.0 || >=24'} pe-library@0.4.1: resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} @@ -50054,9 +50119,6 @@ packages: resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} engines: {node: '>=8'} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} @@ -50094,6 +50156,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -50120,14 +50186,18 @@ packages: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} - playwright-core@1.56.1: - resolution: {integrity: sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==} - engines: {node: '>=18'} + pkijs@3.4.1: + resolution: {integrity: sha512-Oo/NZcSWccq8KyoG7gLE9fnltgHns+pNCjCAp/WmjsUySi+sX7y4z4Xqu4fVb42CDHzRPl33fjzT15V1wvcyhA==} + engines: {node: '>=16.0.0'} + + playwright-core@1.63.0: + resolution: {integrity: sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==} + engines: {node: '>=20'} hasBin: true - playwright@1.56.1: - resolution: {integrity: sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==} - engines: {node: '>=18'} + playwright@1.63.0: + resolution: {integrity: sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==} + engines: {node: '>=20'} hasBin: true plist@3.1.0: @@ -50231,11 +50301,11 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} + postcss-safe-parser@7.1.0: + resolution: {integrity: sha512-1WzZxRLaAFwEh6Do+zyGpjWV3nGJNxxhuh7Ubu/q1ICImMgZJnLwhoaEpRbG4pJppp2Y1ncL9ffA2f+LhrefQg==} + engines: {node: '>=18.0'} peerDependencies: - postcss: ^8.3.3 + postcss: ^8.4.31 postcss-scss@4.0.9: resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} @@ -50254,8 +50324,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -50274,10 +50344,14 @@ packages: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} - postgres@3.4.7: - resolution: {integrity: sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==} + postgres@3.4.9: + resolution: {integrity: sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw==} engines: {node: '>=12'} + powershell-utils@0.2.1: + resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} + engines: {node: '>=20'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -50296,19 +50370,23 @@ packages: pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-format@30.2.0: resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-format@30.5.1: + resolution: {integrity: sha512-byhRAPguVKMQIj4kjJwJ5lAskVhfuiSdiYl/aLTWpgkGEmic2jYhJh1yE9ih8Ox44Xg9ccCT11/S6QrzSJuNrg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + printj@1.1.2: resolution: {integrity: sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==} engines: {node: '>=0.8'} hasBin: true + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} + engines: {node: ^20.17.0 || >=22.9.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -50320,9 +50398,6 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - promise-polyfill@8.3.0: resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==} @@ -50330,10 +50405,6 @@ packages: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} @@ -50435,24 +50506,27 @@ packages: engines: {node: '>=22.12.0'} hasBin: true - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + pure-rand@7.0.1: + resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.2.0: + resolution: {integrity: sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==} + engines: {node: '>=16.0.0'} qrcode@1.5.4: resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} engines: {node: '>=10.13.0'} hasBin: true - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + qs@6.16.0: + resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} engines: {node: '>=0.6'} quansync@0.2.11: @@ -50468,9 +50542,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -50486,13 +50557,14 @@ packages: resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} engines: {node: '>= 0.8'} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} + range-parser@1.3.0: + resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} + engines: {node: '>= 0.6'} + rangetouch@2.0.1: resolution: {integrity: sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==} @@ -50500,9 +50572,16 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.3.0: + resolution: {integrity: sha512-UpMYezM4v5/18F28aC66AEsjXIgE02kyEMH6yLdgLXu/UTfa1Ntwck/nNLrbqJsEXW7gPb0coNO9FQse9WTovA==} + read-binary-file-arch@1.0.6: resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} hasBin: true @@ -50536,6 +50615,10 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + readdirp@5.1.1: + resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} + engines: {node: '>= 20.19.0'} + real-cancellable-promise@1.2.3: resolution: {integrity: sha512-hBI5Gy/55VEeeMtImMgEirD7eq5UmqJf1J8dFZtbJZA/3rB0pYFZ7PayMGueb6v4UtUtpKpP+05L0VwyE1hI9Q==} @@ -50547,6 +50630,13 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -50554,14 +50644,14 @@ packages: regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} @@ -50623,10 +50713,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} @@ -50635,18 +50721,10 @@ packages: responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -50663,11 +50741,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@5.0.10: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true @@ -50688,9 +50761,17 @@ packages: roughjs@4.6.6: resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -50742,8 +50823,8 @@ packages: sanitize-filename@1.6.3: resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} - sanitize-html@2.17.0: - resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} + sanitize-html@2.17.5: + resolution: {integrity: sha512-ZmU1joGRrvoyctKIiuwUxqR6moLoU2Wk+2bMccN6f7UwhAmwYDvWziqPxRDDN2Qip62NqnIrVrT9akbL6Wretg==} sass-loader@14.2.1: resolution: {integrity: sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==} @@ -50786,6 +50867,14 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} + schema-utils@4.5.0: + resolution: {integrity: sha512-zJlMCZ0cAR5p/Y4oVpRoqioDMJcGxaXRrQ/4rP4WyR84vc5z/DolXdbvXeDpTwbtocDFr2rhPqHPErDCUtz2kA==} + engines: {node: '>= 10.13.0'} + + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -50802,12 +50891,9 @@ packages: selderee@0.11.0: resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + selfsigned@5.5.0: + resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} + engines: {node: '>=18'} semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} @@ -50825,25 +50911,39 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serialize-javascript@7.1.2: + resolution: {integrity: sha512-GL2BWwVa6JydKO6l/ljVgjAZF4QJ3S7dWDWi53s5GZT8PJzD2fNxi67HANQGKAqPrwEpL5ba7gUBGi0Ls/sEoQ==} + engines: {node: '>=20.0.0'} - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} engines: {node: '>= 0.8.0'} serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} + set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -50862,12 +50962,6 @@ packages: setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - - setprototypeof@1.1.1: - resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -50875,9 +50969,14 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.35.5: + resolution: {integrity: sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -50895,14 +50994,18 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + shell-quote@1.12.0: + resolution: {integrity: sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==} engines: {node: '>= 0.4'} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + side-channel-map@1.0.1: resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} engines: {node: '>= 0.4'} @@ -50915,6 +51018,10 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -50933,21 +51040,10 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -50977,13 +51073,6 @@ packages: snappyjs@0.7.0: resolution: {integrity: sha512-u5iEEXkMe2EInQio6Wv9LWHOQYRDbD2O9hzS27GpT/lwfIQhTCnHCTqedqHIHe9ZcvQo+9au6vngQayipz1NYw==} - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - - socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - socks@2.8.7: resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} @@ -51007,9 +51096,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.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -51028,13 +51114,6 @@ packages: sparse-bitfield@3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - - spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -51045,10 +51124,6 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' @@ -51079,6 +51154,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -51106,6 +51185,9 @@ packages: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} + strictdom@1.0.1: + resolution: {integrity: sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==} + string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -51254,18 +51336,9 @@ packages: svelte-dev-helper@1.1.9: resolution: {integrity: sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==} - svelte-eslint-parser@0.33.1: - resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 - peerDependenciesMeta: - svelte: - optional: true - - svelte-eslint-parser@0.43.0: - resolution: {integrity: sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + svelte-eslint-parser@1.8.1: + resolution: {integrity: sha512-5zgKBqAf6V8Jyrmr1jViksyG4NKT8NheYwkdxRaMRDAqpGWi9wR8ktcGrAZbfMn/PHUp1BWzAp0cYQECkWuAMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.34.5} peerDependencies: svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: @@ -51345,6 +51418,10 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + systeminformation@5.33.13: resolution: {integrity: sha512-GtyakkchTQKymM1WeAB652zi3rM1q00RKdc+jZe9KGstuc/mWUwAnQGN/RE5gVYvHIR8xYOUIUD9irVKDtA0wA==} engines: {node: '>=10.0.0'} @@ -51360,18 +51437,16 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - - tar@7.5.2: - resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} + tar@7.5.22: + resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me telegraf@4.16.3: resolution: {integrity: sha512-yjEu2NwkHlXu0OARWoNhJlIjX09dRktiMQFsM678BAH/PEPVwctzL67+tvXqLCRQQvm3SDtki2saGO9hLlz68w==} @@ -51384,30 +51459,19 @@ packages: temp-file@3.4.0: resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser@5.44.1: resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + terser@5.51.2: + resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@7.0.2: + resolution: {integrity: sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==} + engines: {node: '>=18'} text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -51418,9 +51482,6 @@ packages: text-segmentation@1.0.3: resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -51428,6 +51489,12 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thingies@2.6.1: + resolution: {integrity: sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + thirty-two@1.0.2: resolution: {integrity: sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==} engines: {node: '>=0.2.6'} @@ -51441,6 +51508,9 @@ packages: timm@1.7.1: resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + tiny-async-pool@1.3.0: + resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} + tiny-lru@11.3.4: resolution: {integrity: sha512-UxWEfRKpFCabAf6fkTNdlfSw/RDUJ/4C6i1aLZaDnGF82PERHyYhz5CMCVYXtLt34LbqgfpJ2bjmgGKgxuF/6A==} engines: {node: '>=12'} @@ -51455,6 +51525,10 @@ packages: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + tippy.js@6.3.7: resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} @@ -51472,17 +51546,10 @@ packages: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toidentifier@1.0.0: - resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} - engines: {node: '>=0.6'} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -51509,6 +51576,12 @@ packages: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -51520,11 +51593,11 @@ packages: truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-custom-error@3.3.1: resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==} @@ -51540,19 +51613,19 @@ packages: ts-invariant@0.4.4: resolution: {integrity: sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==} - ts-jest@29.4.5: - resolution: {integrity: sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==} + ts-jest@29.4.14: + resolution: {integrity: sha512-+943G6wCX5E3VpzTQhBGBFntCmdT+QAkTvUlp03edTONFBvqskuXPhpyX16xdUotO4P5HQKyppldSWjocoltLQ==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' + '@babel/core': '>=7.0.0-beta.0 <9' '@jest/transform': ^29.0.0 || ^30.0.0 '@jest/types': ^29.0.0 || ^30.0.0 babel-jest: ^29.0.0 || ^30.0.0 esbuild: '*' jest: ^29.0.0 || ^30.0.0 jest-util: ^29.0.0 || ^30.0.0 - typescript: '>=4.3 <6' + typescript: '>=4.3 <7' peerDependenciesMeta: '@babel/core': optional: true @@ -51620,6 +51693,10 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + turndown@7.2.2: resolution: {integrity: sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==} @@ -51639,10 +51716,6 @@ packages: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -51659,6 +51732,10 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + type-is@2.1.0: + resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} + engines: {node: '>= 18'} + type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} @@ -51687,6 +51764,13 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typescript-eslint@8.71.1: + resolution: {integrity: sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -51727,23 +51811,16 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - undici@7.18.2: - resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} - engines: {node: '>=20.18.1'} - - unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + undici@6.29.0: + resolution: {integrity: sha512-R+RODBqp6i2pPflGdq+xIOUkl+RNfGgHwoinecKu/JCuf2uO06cOKoDbI2P7Dn6KcswdKwrczbU6IYJ6K8X+wg==} + engines: {node: '>=18.17'} - unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + undici@7.30.0: + resolution: {integrity: sha512-dkrQXeHSaoamnItlYbmzG0wFYrM0ZwDxCIg0A7aKjTyyhh9svRzCNFEzV+Vm05/yehjCzjDZ31KXfGEjYSztDQ==} + engines: {node: '>=20.18.1'} universal-github-app-jwt@1.2.0: resolution: {integrity: sha512-dncpMpnsKBk0eetwfN8D8OUHGfiDhhJ+mtsbMl+7PfW7mYjiH8LIcqRmYMtzYLgSh47HjfdBtrBwIQ/gizKR3g==} @@ -51759,14 +51836,29 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unpdf@1.8.1: + resolution: {integrity: sha512-xkURhy2SoGpOIH0a1gLHNkASPIQYonadDJs2AQwPEfUakafeD9EA1WTWWsaR++gfTCXJpV27W7tU1nXuk82UKQ==} + engines: {node: '>=22'} + peerDependencies: + '@napi-rs/canvas': ^0.1.69 || ^1.0.0 + peerDependenciesMeta: + '@napi-rs/canvas': + optional: true + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unrs-resolver@1.12.2: + resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} + unused-filename@4.0.1: resolution: {integrity: sha512-ZX6U1J04K1FoSUeoX1OicAhw4d0aro2qo+L8RhJkiGTNtBNkd/Fi1Wxoc9HzcVu6HfOzm0si/N15JjxFmD1z6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + unzipper@0.12.5: + resolution: {integrity: sha512-tXYOi9R57Uj/2Z25SOs5RRSzq886MBQj2gY8dPL+xl/kv6s6SvByoKfAtvfVeEuhntWDgjd2o9p2lb4TVPAz0A==} + update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -51822,21 +51914,23 @@ packages: utrie@1.0.2: resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} hasBin: true uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache-lib@3.0.1: @@ -51854,30 +51948,6 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verror@1.10.1: - resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} - engines: {node: '>=0.6.0'} - - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - - vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} - hasBin: true - - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} @@ -51885,19 +51955,10 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + watchpack@2.5.2: + resolution: {integrity: sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==} engines: {node: '>=10.13.0'} - wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-push@3.6.7: resolution: {integrity: sha512-OpiIUe8cuGjrj3mMBFWY+e4MMIkW3SVT+7vEIjvD9kejGUypv8GPDf84JdPWskK8zMRIJ6xYGm+Kxr8YkPyA0A==} engines: {node: '>= 16'} @@ -51911,6 +51972,9 @@ packages: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} + webcrypto-core@1.9.2: + resolution: {integrity: sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q==} + webdriver-bidi-protocol@0.4.3: resolution: {integrity: sha512-uuN0goWfxP22B7J/uAgBpOYNPttC+XVseYE+rSY5+rQ+YBeVz/VORw8WbmLVcqW78zNg5A4qnjNXYUWR3il2ig==} @@ -51943,18 +52007,21 @@ packages: webpack-dev-server: optional: true - webpack-dev-middleware@5.3.4: - resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} - engines: {node: '>= 12.13.0'} + webpack-dev-middleware@8.3.0: + resolution: {integrity: sha512-jFNNMB29ugmkEUFW9cpWNqcWFQNwuMTMVoRpKVAiz/5nh3gA4x9x6DRPhNHGc/SLre7pEP9yrAPDAmCvdCblKg==} + engines: {node: '>= 20.9.0'} peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + webpack: ^5.101.0 + peerDependenciesMeta: + webpack: + optional: true - webpack-dev-server@4.15.2: - resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} - engines: {node: '>= 12.13.0'} + webpack-dev-server@6.0.0: + resolution: {integrity: sha512-q9SD4ItOGhZLeU6EGT10caDZdHjF50Pz1DtkRZZOPsfluMXOkacWKKOtSBSLVkPqKiF67eFUC0rI88U/tSFPEw==} + engines: {node: '>= 22.15.0'} hasBin: true peerDependencies: - webpack: ^4.37.0 || ^5.0.0 + webpack: ^5.101.0 webpack-cli: '*' peerDependenciesMeta: webpack: @@ -51969,12 +52036,12 @@ packages: webpack-sources@1.4.3: resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} - webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + webpack-sources@3.6.0: + resolution: {integrity: sha512-EIMmPVvNI0CYXyRPp34F2Qk7W37/BZVZIofS6LAUnrNjCVahS+hO4mxwFJDjQjODTGZDtVzLYoN2+1dYkhk9qA==} engines: {node: '>=10.13.0'} - webpack@5.102.1: - resolution: {integrity: sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==} + webpack@5.111.1: + resolution: {integrity: sha512-cNypaz0RP+S4cvQVi1M/3bRUkvNP0xZpL0TjFx+c6jg64VbxD+2weWDgY9UnjRI6dhZgtaj8DU76GGFcJ79xPQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -51987,14 +52054,6 @@ packages: resolution: {integrity: sha512-CHbl2ZQbxx164IgWRgzJno4hWtM4tFbRam1QfI3Yxhs3w/DvqluVxVWeXs3oL5/fbGkSNLKo0Ty5MgUWceNhog==} engines: {node: '>=6.0.0', npm: '>=3.10.0'} - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - websocket@1.0.35: resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==} engines: {node: '>=4.0.0'} @@ -52043,8 +52102,15 @@ packages: engines: {node: '>= 8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + which@6.0.1: + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} @@ -52096,9 +52162,9 @@ packages: write-file-atomic@1.3.4: resolution: {integrity: sha512-SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw==} - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} @@ -52124,6 +52190,10 @@ packages: utf-8-validate: optional: true + wsl-utils@1.0.1: + resolution: {integrity: sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==} + engines: {node: '>=20'} + xhr@2.6.0: resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} @@ -52247,9 +52317,6 @@ packages: resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yjs@13.6.27: resolution: {integrity: sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} @@ -52289,8 +52356,6 @@ packages: snapshots: - 7zip-bin@5.2.0: {} - '@adobe/css-tools@4.4.4': {} '@alloc/quick-lru@5.2.0': {} @@ -52339,15 +52404,16 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/client-ses@3.1137.0': + '@aws-sdk/client-sesv2@3.1147.0': dependencies: - '@aws-sdk/core': 3.978.0 - '@aws-sdk/credential-provider-node': 3.972.83 - '@aws-sdk/types': 3.974.5 - '@smithy/core': 3.34.1 + '@aws-sdk/core': 3.978.1 + '@aws-sdk/credential-provider-node': 3.972.84 + '@aws-sdk/signature-v4-multi-region': 3.996.47 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 '@smithy/fetch-http-handler': 5.8.0 '@smithy/node-http-handler': 4.12.1 - '@smithy/types': 4.18.0 + '@smithy/types': 4.19.0 tslib: 2.8.1 '@aws-sdk/core@3.978.0': @@ -52361,6 +52427,17 @@ snapshots: bowser: 2.12.1 tslib: 2.8.1 + '@aws-sdk/core@3.978.1': + dependencies: + '@aws-sdk/types': 3.974.6 + '@aws-sdk/xml-builder': 3.972.41 + '@aws/lambda-invoke-store': 0.3.0 + '@smithy/core': 3.35.1 + '@smithy/signature-v4': 5.7.3 + '@smithy/types': 4.19.0 + bowser: 2.12.1 + tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.972.71': dependencies: '@aws-sdk/core': 3.978.0 @@ -52369,6 +52446,14 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.972.72': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.73': dependencies: '@aws-sdk/core': 3.978.0 @@ -52379,6 +52464,16 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.74': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/fetch-http-handler': 5.8.0 + '@smithy/node-http-handler': 4.12.1 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.973.16': dependencies: '@aws-sdk/core': 3.978.0 @@ -52395,6 +52490,22 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.973.17': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/credential-provider-env': 3.972.72 + '@aws-sdk/credential-provider-http': 3.972.74 + '@aws-sdk/credential-provider-login': 3.972.79 + '@aws-sdk/credential-provider-process': 3.972.72 + '@aws-sdk/credential-provider-sso': 3.973.16 + '@aws-sdk/credential-provider-web-identity': 3.972.78 + '@aws-sdk/nested-clients': 3.997.46 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/credential-provider-imds': 4.5.2 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-login@3.972.78': dependencies: '@aws-sdk/core': 3.978.0 @@ -52404,6 +52515,15 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-login@3.972.79': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/nested-clients': 3.997.46 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-node@3.972.83': dependencies: '@aws-sdk/credential-provider-env': 3.972.71 @@ -52418,6 +52538,20 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-node@3.972.84': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.72 + '@aws-sdk/credential-provider-http': 3.972.74 + '@aws-sdk/credential-provider-ini': 3.973.17 + '@aws-sdk/credential-provider-process': 3.972.72 + '@aws-sdk/credential-provider-sso': 3.973.16 + '@aws-sdk/credential-provider-web-identity': 3.972.78 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/credential-provider-imds': 4.5.2 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.71': dependencies: '@aws-sdk/core': 3.978.0 @@ -52426,6 +52560,14 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.72': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.973.15': dependencies: '@aws-sdk/core': 3.978.0 @@ -52436,6 +52578,16 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.973.16': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/nested-clients': 3.997.46 + '@aws-sdk/token-providers': 3.1138.0 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-web-identity@3.972.77': dependencies: '@aws-sdk/core': 3.978.0 @@ -52445,6 +52597,15 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-web-identity@3.972.78': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/nested-clients': 3.997.46 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/lib-storage@3.1137.0(@aws-sdk/client-s3@3.1137.0)': dependencies: '@aws-sdk/client-s3': 3.1137.0 @@ -52475,6 +52636,17 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/nested-clients@3.997.46': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/signature-v4-multi-region': 3.996.47 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/fetch-http-handler': 5.8.0 + '@smithy/node-http-handler': 4.12.1 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/s3-request-presigner@3.1137.0': dependencies: '@aws-sdk/core': 3.978.0 @@ -52491,6 +52663,13 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.996.47': + dependencies: + '@aws-sdk/types': 3.974.6 + '@smithy/signature-v4': 5.7.3 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.1129.0': dependencies: '@aws-sdk/core': 3.978.0 @@ -52500,16 +52679,35 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/token-providers@3.1138.0': + dependencies: + '@aws-sdk/core': 3.978.1 + '@aws-sdk/nested-clients': 3.997.46 + '@aws-sdk/types': 3.974.6 + '@smithy/core': 3.35.1 + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/types@3.974.5': dependencies: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/types@3.974.6': + dependencies: + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws-sdk/xml-builder@3.972.40': dependencies: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@aws-sdk/xml-builder@3.972.41': + dependencies: + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@aws/lambda-invoke-store@0.3.0': {} '@babel/code-frame@7.27.1': @@ -52703,26 +52901,11 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@braintree/sanitize-url@7.1.1': {} + '@braintree/sanitize-url@7.1.2': {} '@bufbuild/protobuf@1.10.1': {} - '@chevrotain/cst-dts-gen@11.0.3': - dependencies: - '@chevrotain/gast': 11.0.3 - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/gast@11.0.3': - dependencies: - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/regexp-to-ast@11.0.3': {} - - '@chevrotain/types@11.0.3': {} - - '@chevrotain/utils@11.0.3': {} + '@chevrotain/types@11.1.2': {} '@colors/colors@1.6.0': {} @@ -52758,11 +52941,6 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 - '@develar/schema-utils@2.6.5': - dependencies: - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - '@discoveryjs/json-ext@0.5.7': {} '@elastic/elasticsearch@7.17.14': @@ -52774,13 +52952,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@electron-internal/extract-zip@1.0.5': {} + '@electron/asar@3.4.1': dependencies: commander: 5.1.0 glob: 7.2.3 minimatch: 3.1.2 - '@electron/get@2.0.3': + '@electron/fuses@1.8.0': + dependencies: + chalk: 4.1.2 + fs-extra: 9.1.0 + minimist: 1.2.8 + + '@electron/get@3.1.0': dependencies: debug: 4.4.3 env-paths: 2.2.1 @@ -52794,6 +52980,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@electron/get@5.1.0': + dependencies: + debug: 4.4.3 + env-paths: 3.0.0 + graceful-fs: 4.2.11 + progress: 2.0.3 + semver: 7.7.3 + sumchecker: 3.0.1 + optionalDependencies: + undici: 7.30.0 + transitivePeerDependencies: + - supports-color + '@electron/notarize@2.5.0': dependencies: debug: 4.4.3 @@ -52802,7 +53001,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/osx-sign@1.3.1': + '@electron/osx-sign@1.3.3': dependencies: compare-version: 0.1.2 debug: 4.4.3 @@ -52813,26 +53012,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/rebuild@3.6.1': + '@electron/rebuild@4.2.1': dependencies: '@malept/cross-spawn-promise': 2.0.0 - chalk: 4.1.2 debug: 4.4.3 - detect-libc: 2.1.2 - fs-extra: 10.1.0 - got: 11.8.6 - node-abi: 3.80.0 + node-abi: 4.36.0 node-api-version: 0.2.1 - node-gyp: 9.4.1 - ora: 5.4.1 + node-gyp: 12.4.0 read-binary-file-arch: 1.0.6 - semver: 7.7.3 - tar: 6.2.1 - yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@electron/universal@2.0.1': + '@electron/universal@2.0.3': dependencies: '@electron/asar': 3.4.1 '@malept/cross-spawn-promise': 2.0.0 @@ -52844,12 +53035,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.7.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.7.0': dependencies: tslib: 2.8.1 @@ -52860,6 +53067,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.25.12': optional: true @@ -52938,30 +53150,64 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': + '@eslint-community/eslint-plugin-eslint-comments@4.8.1(eslint@9.39.5(jiti@2.7.0))': dependencies: - eslint: 8.57.1 + escape-string-regexp: 4.0.0 + eslint: 9.39.5(jiti@2.7.0) + ignore: 7.0.12 + + '@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(jiti@2.7.0))': + dependencies: + eslint: 9.39.5(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.5(jiti@2.7.0))': + dependencies: + eslint: 9.39.5(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/eslintrc@2.1.4': + '@eslint/config-array@0.21.2': dependencies: - ajv: 6.12.6 + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.7': + dependencies: + ajv: 6.15.0 debug: 4.4.3 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.4.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 + js-yaml: 4.3.2 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} + '@eslint/js@9.39.5': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 - '@faker-js/faker@8.4.1': {} + '@faker-js/faker@10.6.0': {} '@formatjs/ecma402-abstract@2.3.6': dependencies: @@ -52989,8 +53235,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@gar/promisify@1.1.3': {} - '@grpc/grpc-js@1.14.5': dependencies: '@grpc/proto-loader': 0.8.0 @@ -53027,7 +53271,7 @@ snapshots: async-lock: 1.4.1 kleur: 4.1.5 lib0: 0.2.114 - uuid: 11.1.0 + uuid: 11.1.1 ws: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) y-protocols: 1.0.6(yjs@13.6.27) yjs: 13.6.27 @@ -53043,17 +53287,21 @@ snapshots: y-prosemirror: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3)(y-protocols@1.0.6(yjs@13.6.27))(yjs@13.6.27) yjs: 13.6.27 - '@humanwhocodes/config-array@0.13.0': + '@humanfs/core@0.19.2': dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.3 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.4.3': {} '@iconify/types@2.0.0': {} @@ -53070,107 +53318,118 @@ snapshots: transitivePeerDependencies: - supports-color - '@img/colour@1.0.0': {} + '@img/colour@1.1.0': {} - '@img/sharp-darwin-arm64@0.34.5': + '@img/sharp-darwin-arm64@0.35.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-arm64': 1.3.4 optional: true - '@img/sharp-darwin-x64@0.34.5': + '@img/sharp-darwin-x64@0.35.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.3.4 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.5': + dependencies: + '@img/sharp-wasm32': 0.35.5 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': + '@img/sharp-libvips-darwin-arm64@1.3.4': optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': + '@img/sharp-libvips-darwin-x64@1.3.4': optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': + '@img/sharp-libvips-linux-arm64@1.3.4': optional: true - '@img/sharp-libvips-linux-arm@1.2.4': + '@img/sharp-libvips-linux-arm@1.3.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': + '@img/sharp-libvips-linux-ppc64@1.3.4': optional: true - '@img/sharp-libvips-linux-riscv64@1.2.4': + '@img/sharp-libvips-linux-riscv64@1.3.4': optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': + '@img/sharp-libvips-linux-s390x@1.3.4': optional: true - '@img/sharp-libvips-linux-x64@1.2.4': + '@img/sharp-libvips-linux-x64@1.3.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': + '@img/sharp-libvips-linuxmusl-x64@1.3.4': optional: true - '@img/sharp-linux-arm64@0.34.5': + '@img/sharp-linux-arm64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.3.4 optional: true - '@img/sharp-linux-arm@0.34.5': + '@img/sharp-linux-arm@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.3.4 optional: true - '@img/sharp-linux-ppc64@0.34.5': + '@img/sharp-linux-ppc64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.3.4 optional: true - '@img/sharp-linux-riscv64@0.34.5': + '@img/sharp-linux-riscv64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.3.4 optional: true - '@img/sharp-linux-s390x@0.34.5': + '@img/sharp-linux-s390x@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.3.4 optional: true - '@img/sharp-linux-x64@0.34.5': + '@img/sharp-linux-x64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.3.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': + '@img/sharp-linuxmusl-arm64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.5': + '@img/sharp-linuxmusl-x64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 optional: true - '@img/sharp-wasm32@0.34.5': + '@img/sharp-wasm32@0.35.5': dependencies: - '@emnapi/runtime': 1.7.0 + '@emnapi/runtime': 1.11.3 optional: true - '@img/sharp-win32-arm64@0.34.5': + '@img/sharp-webcontainers-wasm32@0.35.5': + dependencies: + '@img/sharp-wasm32': 0.35.5 optional: true - '@img/sharp-win32-ia32@0.34.5': + '@img/sharp-win32-arm64@0.35.5': optional: true - '@img/sharp-win32-x64@0.34.5': + '@img/sharp-win32-ia32@0.35.5': optional: true - '@isaacs/balanced-match@4.0.1': {} + '@img/sharp-win32-x64@0.35.5': + optional: true - '@isaacs/brace-expansion@5.0.0': + '@interlace/eslint-devkit@1.19.8(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: - '@isaacs/balanced-match': 4.0.1 + eslint: 9.39.5(jiti@2.7.0) + optionalDependencies: + '@typescript-eslint/utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + typescript: 5.9.3 '@isaacs/cliui@8.0.2': dependencies: @@ -53195,219 +53454,205 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jest/console@29.7.0': + '@jest/console@30.5.2': dependencies: - '@jest/types': 29.6.3 + '@jest/types': 30.5.1 '@types/node': 24.13.6 chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + jest-message-util: 30.5.1 + jest-util: 30.5.1 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3))': + '@jest/core@30.5.2(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3))': dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 30.5.2 + '@jest/pattern': 30.5.0 + '@jest/reporters': 30.5.2 + '@jest/test-result': 30.5.2 + '@jest/transform': 30.5.2 + '@jest/types': 30.5.1 '@types/node': 24.13.6 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 + ci-info: 4.3.1 + exit-x: 0.2.2 + fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 + jest-changed-files: 30.5.1 + jest-config: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + jest-haste-map: 30.5.1 + jest-message-util: 30.5.1 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.1 + jest-resolve-dependencies: 30.5.2 + jest-runner: 30.5.2 + jest-runtime: 30.5.2 + jest-snapshot: 30.5.2 + jest-util: 30.5.1 + jest-validate: 30.5.1 + jest-watcher: 30.5.2 + pretty-format: 30.5.1 slash: 3.0.0 - strip-ansi: 6.0.1 transitivePeerDependencies: - babel-plugin-macros + - esbuild-register - supports-color - ts-node - '@jest/environment-jsdom-abstract@30.2.0(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@jest/diff-sequences@30.5.0': {} + + '@jest/environment-jsdom-abstract@30.5.2(@types/jsdom@21.1.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@jest/environment': 30.2.0 - '@jest/fake-timers': 30.2.0 - '@jest/types': 30.2.0 + '@jest/environment': 30.5.2 + '@jest/fake-timers': 30.5.2 + '@jest/types': 30.5.1 '@types/jsdom': 21.1.7 '@types/node': 24.13.6 - jest-mock: 30.2.0 - jest-util: 30.2.0 + jest-mock: 30.5.2 + jest-util: 30.5.1 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@jest/environment-jsdom-abstract@30.2.0(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@jest/environment-jsdom-abstract@30.5.2(@types/jsdom@21.1.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@jest/environment': 30.2.0 - '@jest/fake-timers': 30.2.0 - '@jest/types': 30.2.0 + '@jest/environment': 30.5.2 + '@jest/fake-timers': 30.5.2 + '@jest/types': 30.5.1 '@types/jsdom': 21.1.7 '@types/node': 24.13.6 - jest-mock: 30.2.0 - jest-util: 30.2.0 + jest-mock: 30.5.2 + jest-util: 30.5.1 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 24.13.6 - jest-mock: 29.7.0 - - '@jest/environment@30.2.0': + '@jest/environment@30.5.2': dependencies: - '@jest/fake-timers': 30.2.0 - '@jest/types': 30.2.0 + '@jest/fake-timers': 30.5.2 + '@jest/types': 30.5.1 '@types/node': 24.13.6 - jest-mock: 30.2.0 + jest-mock: 30.5.2 - '@jest/expect-utils@29.7.0': + '@jest/expect-utils@30.5.2': dependencies: - jest-get-type: 29.6.3 + '@jest/get-type': 30.5.0 - '@jest/expect@29.7.0': + '@jest/expect@30.5.2': dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 + expect: 30.5.2 + jest-snapshot: 30.5.2 transitivePeerDependencies: - supports-color - '@jest/fake-timers@29.7.0': + '@jest/fake-timers@30.5.2': dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 + '@jest/types': 30.5.1 + '@sinonjs/fake-timers': 15.4.0 '@types/node': 24.13.6 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 + jest-message-util: 30.5.1 + jest-mock: 30.5.2 + jest-util: 30.5.1 - '@jest/fake-timers@30.2.0': - dependencies: - '@jest/types': 30.2.0 - '@sinonjs/fake-timers': 13.0.5 - '@types/node': 24.13.6 - jest-message-util: 30.2.0 - jest-mock: 30.2.0 - jest-util: 30.2.0 + '@jest/get-type@30.5.0': {} - '@jest/globals@29.7.0': + '@jest/globals@30.5.2': dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 + '@jest/environment': 30.5.2 + '@jest/expect': 30.5.2 + '@jest/types': 30.5.1 + jest-mock: 30.5.2 transitivePeerDependencies: - supports-color - '@jest/pattern@30.0.1': + '@jest/pattern@30.5.0': dependencies: '@types/node': 24.13.6 - jest-regex-util: 30.0.1 + jest-regex-util: 30.5.0 - '@jest/reporters@29.7.0': + '@jest/reporters@30.5.2': dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 30.5.2 + '@jest/test-result': 30.5.2 + '@jest/transform': 30.5.2 + '@jest/types': 30.5.1 '@jridgewell/trace-mapping': 0.3.31 '@types/node': 24.13.6 chalk: 4.1.2 collect-v8-coverage: 1.0.3 - exit: 0.1.2 - glob: 7.2.3 + exit-x: 0.2.2 + glob: 13.0.6 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: 4.0.1 + istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 + jest-message-util: 30.5.1 + jest-util: 30.5.1 + jest-worker: 30.5.1 slash: 3.0.0 string-length: 4.0.2 - strip-ansi: 6.0.1 v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color - '@jest/schemas@29.6.3': + '@jest/schemas@30.0.5': dependencies: - '@sinclair/typebox': 0.27.8 + '@sinclair/typebox': 0.34.41 - '@jest/schemas@30.0.5': + '@jest/schemas@30.5.0': dependencies: '@sinclair/typebox': 0.34.41 - '@jest/source-map@29.6.3': + '@jest/snapshot-utils@30.5.1': + dependencies: + '@jest/types': 30.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + natural-compare: 1.4.0 + + '@jest/source-map@30.5.2': dependencies: '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 + convert-source-map: 2.0.0 graceful-fs: 4.2.11 - '@jest/test-result@29.7.0': + '@jest/test-result@30.5.2': dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 30.5.2 + '@jest/types': 30.5.1 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.3 - '@jest/test-sequencer@29.7.0': + '@jest/test-sequencer@30.5.2': dependencies: - '@jest/test-result': 29.7.0 + '@jest/test-result': 30.5.2 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 + jest-haste-map: 30.5.1 slash: 3.0.0 - '@jest/transform@29.7.0': + '@jest/transform@30.5.2': dependencies: '@babel/core': 7.28.5 - '@jest/types': 29.6.3 + '@jest/types': 30.5.1 '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 6.1.1 + babel-plugin-istanbul: 8.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: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 + jest-haste-map: 30.5.1 + jest-regex-util: 30.5.0 + jest-util: 30.5.1 pirates: 4.0.7 slash: 3.0.0 - write-file-atomic: 4.0.2 + write-file-atomic: 5.0.1 transitivePeerDependencies: - supports-color - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 24.13.6 - '@types/yargs': 17.0.34 - chalk: 4.1.2 - - '@jest/types@30.2.0': + '@jest/types@30.5.1': dependencies: - '@jest/pattern': 30.0.1 - '@jest/schemas': 30.0.5 + '@jest/pattern': 30.5.0 + '@jest/schemas': 30.5.0 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 24.13.6 @@ -53694,6 +53939,134 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/base64@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.80.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.80.0(tslib@2.8.1) + thingies: 2.6.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.80.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.80.0(tslib@2.8.1) + thingies: 2.6.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.80.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.80.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.80.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.80.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.80.0(tslib@2.8.1) + glob-to-regex.js: 1.3.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.80.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.80.0(tslib@2.8.1) + glob-to-regex.js: 1.3.1(tslib@2.8.1) + thingies: 2.6.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.80.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.80.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.80.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.6.1(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.6.1(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + '@koa/cors@5.0.0': dependencies: vary: 1.1.2 @@ -53740,24 +54113,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@mapbox/node-pre-gyp@2.0.0(encoding@0.1.13)': + '@mapbox/node-pre-gyp@2.0.0': dependencies: consola: 3.4.2 detect-libc: 2.1.2 https-proxy-agent: 7.0.6 - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 nopt: 8.1.0 semver: 7.7.3 - tar: 7.5.2 + tar: 7.5.22 transitivePeerDependencies: - encoding - supports-color '@mediapipe/tasks-vision@0.10.14': {} - '@mermaid-js/parser@0.6.3': + '@mermaid-js/parser@1.2.1': dependencies: - langium: 3.3.1 + '@chevrotain/types': 11.1.2 '@mixmark-io/domino@2.2.0': {} @@ -53783,6 +54156,54 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true + '@napi-rs/canvas-android-arm64@1.0.10': + optional: true + + '@napi-rs/canvas-darwin-arm64@1.0.10': + optional: true + + '@napi-rs/canvas-darwin-x64@1.0.10': + optional: true + + '@napi-rs/canvas-linux-arm-gnueabihf@1.0.10': + optional: true + + '@napi-rs/canvas-linux-arm64-gnu@1.0.10': + optional: true + + '@napi-rs/canvas-linux-arm64-musl@1.0.10': + optional: true + + '@napi-rs/canvas-linux-riscv64-gnu@1.0.10': + optional: true + + '@napi-rs/canvas-linux-x64-gnu@1.0.10': + optional: true + + '@napi-rs/canvas-linux-x64-musl@1.0.10': + optional: true + + '@napi-rs/canvas-win32-arm64-msvc@1.0.10': + optional: true + + '@napi-rs/canvas-win32-x64-msvc@1.0.10': + optional: true + + '@napi-rs/canvas@1.0.10': + optionalDependencies: + '@napi-rs/canvas-android-arm64': 1.0.10 + '@napi-rs/canvas-darwin-arm64': 1.0.10 + '@napi-rs/canvas-darwin-x64': 1.0.10 + '@napi-rs/canvas-linux-arm-gnueabihf': 1.0.10 + '@napi-rs/canvas-linux-arm64-gnu': 1.0.10 + '@napi-rs/canvas-linux-arm64-musl': 1.0.10 + '@napi-rs/canvas-linux-riscv64-gnu': 1.0.10 + '@napi-rs/canvas-linux-x64-gnu': 1.0.10 + '@napi-rs/canvas-linux-x64-musl': 1.0.10 + '@napi-rs/canvas-win32-arm64-msvc': 1.0.10 + '@napi-rs/canvas-win32-x64-msvc': 1.0.10 + optional: true + '@napi-rs/snappy-android-arm-eabi@7.3.3': optional: true @@ -53846,8 +54267,17 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.4 + optional: true + '@noble/hashes@1.8.0': {} + '@noble/hashes@2.4.0': {} + '@nodable/entities@3.0.0': {} '@nodelib/fs.scandir@2.1.5': @@ -53862,16 +54292,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@npmcli/fs@2.1.2': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.7.3 - - '@npmcli/move-file@2.0.1': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - '@octokit/app@14.1.0': dependencies: '@octokit/auth-app': 6.1.4 @@ -54814,42 +55234,78 @@ snapshots: '@parcel/watcher-android-arm64@2.5.1': optional: true + '@parcel/watcher-android-arm64@2.6.0': + optional: true + '@parcel/watcher-darwin-arm64@2.5.1': optional: true + '@parcel/watcher-darwin-arm64@2.6.0': + optional: true + '@parcel/watcher-darwin-x64@2.5.1': optional: true + '@parcel/watcher-darwin-x64@2.6.0': + optional: true + '@parcel/watcher-freebsd-x64@2.5.1': optional: true + '@parcel/watcher-freebsd-x64@2.6.0': + optional: true + '@parcel/watcher-linux-arm-glibc@2.5.1': optional: true + '@parcel/watcher-linux-arm-glibc@2.6.0': + optional: true + '@parcel/watcher-linux-arm-musl@2.5.1': optional: true + '@parcel/watcher-linux-arm-musl@2.6.0': + optional: true + '@parcel/watcher-linux-arm64-glibc@2.5.1': optional: true + '@parcel/watcher-linux-arm64-glibc@2.6.0': + optional: true + '@parcel/watcher-linux-arm64-musl@2.5.1': optional: true + '@parcel/watcher-linux-arm64-musl@2.6.0': + optional: true + '@parcel/watcher-linux-x64-glibc@2.5.1': optional: true + '@parcel/watcher-linux-x64-glibc@2.6.0': + optional: true + '@parcel/watcher-linux-x64-musl@2.5.1': optional: true + '@parcel/watcher-linux-x64-musl@2.6.0': + optional: true + '@parcel/watcher-win32-arm64@2.5.1': optional: true + '@parcel/watcher-win32-arm64@2.6.0': + optional: true + '@parcel/watcher-win32-ia32@2.5.1': optional: true '@parcel/watcher-win32-x64@2.5.1': optional: true + '@parcel/watcher-win32-x64@2.6.0': + optional: true + '@parcel/watcher@2.5.1': dependencies: detect-libc: 1.0.3 @@ -54872,6 +55328,26 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true + '@parcel/watcher@2.6.0': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.7 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.6.0 + '@parcel/watcher-darwin-arm64': 2.6.0 + '@parcel/watcher-darwin-x64': 2.6.0 + '@parcel/watcher-freebsd-x64': 2.6.0 + '@parcel/watcher-linux-arm-glibc': 2.6.0 + '@parcel/watcher-linux-arm-musl': 2.6.0 + '@parcel/watcher-linux-arm64-glibc': 2.6.0 + '@parcel/watcher-linux-arm64-musl': 2.6.0 + '@parcel/watcher-linux-x64-glibc': 2.6.0 + '@parcel/watcher-linux-x64-musl': 2.6.0 + '@parcel/watcher-win32-arm64': 2.6.0 + '@parcel/watcher-win32-x64': 2.6.0 + '@pdf-lib/standard-fonts@1.0.0': dependencies: pako: 1.0.11 @@ -54880,12 +55356,120 @@ snapshots: dependencies: pako: 1.0.11 + '@peculiar/asn1-cms@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + '@peculiar/asn1-x509-attr': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pfx@2.10.0': + dependencies: + '@peculiar/asn1-cms': 2.10.0 + '@peculiar/asn1-pkcs8': 2.10.0 + '@peculiar/asn1-rsa': 2.10.0 + '@peculiar/asn1-schema': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs8@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs9@2.10.0': + dependencies: + '@peculiar/asn1-cms': 2.10.0 + '@peculiar/asn1-pfx': 2.10.0 + '@peculiar/asn1-pkcs8': 2.10.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + '@peculiar/asn1-x509-attr': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.10.0': + dependencies: + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-x509-attr@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/json-schema@1.1.12': + dependencies: + tslib: 2.8.1 + + '@peculiar/utils@2.0.3': + dependencies: + tslib: 2.8.1 + + '@peculiar/webcrypto@1.7.1': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/json-schema': 1.1.12 + '@peculiar/utils': 2.0.3 + tslib: 2.8.1 + webcrypto-core: 1.9.2 + + '@peculiar/x509@1.14.3': + dependencies: + '@peculiar/asn1-cms': 2.10.0 + '@peculiar/asn1-csr': 2.10.0 + '@peculiar/asn1-ecc': 2.10.0 + '@peculiar/asn1-pkcs9': 2.10.0 + '@peculiar/asn1-rsa': 2.10.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + pvtsutils: 1.3.6 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + tsyringe: 4.10.0 + '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.56.1': + '@pkgr/core@0.3.6': {} + + '@playwright/test@1.63.0': dependencies: - playwright: 1.56.1 + playwright: 1.63.0 '@polar-sh/sdk@0.37.0': dependencies: @@ -54919,12 +55503,10 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@3.2.2(yauzl@2.10.0)': + '@puppeteer/browsers@3.2.2': dependencies: modern-tar: 0.8.5 yargs: 18.2.0 - optionalDependencies: - yauzl: 2.10.0 '@remirror/core-constants@3.0.0': {} @@ -54935,23 +55517,21 @@ snapshots: domhandler: 5.0.3 selderee: 0.11.0 - '@signpdf/placeholder-pdf-lib@3.2.6(pdf-lib@1.17.1)': + '@signpdf/placeholder-pdf-lib@3.3.0(pdf-lib@1.17.1)': dependencies: - '@signpdf/utils': 3.2.4 + '@signpdf/utils': 3.3.0 pdf-lib: 1.17.1 - '@signpdf/signer-p12@3.2.4(node-forge@1.3.1)': + '@signpdf/signer-p12@3.3.0(node-forge@1.4.0)': dependencies: - '@signpdf/utils': 3.2.4 - node-forge: 1.3.1 + '@signpdf/utils': 3.3.0 + node-forge: 1.4.0 - '@signpdf/signpdf@3.2.5': + '@signpdf/signpdf@3.3.0': dependencies: - '@signpdf/utils': 3.2.4 + '@signpdf/utils': 3.3.0 - '@signpdf/utils@3.2.4': {} - - '@sinclair/typebox@0.27.8': {} + '@signpdf/utils@3.3.0': {} '@sinclair/typebox@0.34.41': {} @@ -54961,11 +55541,7 @@ snapshots: dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - - '@sinonjs/fake-timers@13.0.5': + '@sinonjs/fake-timers@15.4.0': dependencies: '@sinonjs/commons': 3.0.1 @@ -54981,6 +55557,11 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 + '@smithy/core@3.35.1': + dependencies: + '@smithy/types': 4.19.0 + tslib: 2.8.1 + '@smithy/credential-provider-imds@4.5.2': dependencies: '@smithy/core': 3.34.1 @@ -55028,6 +55609,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/types@4.19.0': + dependencies: + tslib: 2.8.1 + '@smithy/types@4.8.1': dependencies: tslib: 2.8.1 @@ -55043,6 +55628,16 @@ snapshots: '@stablelib/base64@1.0.1': {} + '@stylistic/eslint-plugin@5.10.0(eslint@9.39.5(jiti@2.7.0))': + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)) + '@typescript-eslint/types': 8.71.1 + eslint: 9.39.5(jiti@2.7.0) + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + estraverse: 5.3.0 + picomatch: 4.0.3 + '@szmarczak/http-timer@4.0.6': dependencies: defer-to-connect: 2.0.1 @@ -55318,8 +55913,6 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@tootallnate/once@2.0.0': {} - '@trysound/sax@0.2.0': {} '@tsconfig/node10@1.0.11': {} @@ -55335,6 +55928,11 @@ snapshots: tslib: 2.8.1 optional: true + '@tybys/wasm-util@0.10.4': + dependencies: + tslib: 2.8.1 + optional: true + '@types/accepts@1.3.7': dependencies: '@types/node': 24.13.6 @@ -55400,7 +55998,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.1.0 + '@types/express-serve-static-core': 5.1.3 '@types/node': 24.13.6 '@types/connect@3.4.38': @@ -55547,24 +56145,10 @@ snapshots: '@types/domhandler@2.4.5': {} - '@types/dompurify@3.2.0': - dependencies: - dompurify: 3.3.0 - '@types/domutils@2.1.0': dependencies: domutils: 3.2.2 - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@types/estree@1.0.8': {} '@types/events@3.0.3': {} @@ -55592,7 +56176,7 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 1.2.1 - '@types/express-serve-static-core@5.1.0': + '@types/express-serve-static-core@5.1.3': dependencies: '@types/node': 24.13.6 '@types/qs': 6.9.18 @@ -55606,16 +56190,18 @@ snapshots: '@types/qs': 6.9.18 '@types/serve-static': 1.15.10 + '@types/express@5.0.6': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 5.1.3 + '@types/serve-static': 2.2.0 + '@types/fs-extra@9.0.13': dependencies: '@types/node': 24.13.6 '@types/geojson@7946.0.16': {} - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 24.13.6 - '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -55639,10 +56225,6 @@ snapshots: '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.17': - dependencies: - '@types/node': 24.13.6 - '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-report@3.0.3': @@ -55653,10 +56235,10 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jest@29.5.14': + '@types/jest@30.0.0': dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 + expect: 30.5.2 + pretty-format: 30.2.0 '@types/js-yaml@4.0.9': {} @@ -55769,11 +56351,7 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: '@types/node': 24.13.6 - form-data: 4.0.4 - - '@types/node-forge@1.3.14': - dependencies: - '@types/node': 24.13.6 + form-data: 4.0.6 '@types/node@16.9.1': {} @@ -55781,17 +56359,12 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.19.0': - dependencies: - undici-types: 6.21.0 - '@types/node@24.13.6': dependencies: undici-types: 7.18.2 - '@types/nodemailer@6.4.21': + '@types/nodemailer@8.0.2': dependencies: - '@aws-sdk/client-ses': 3.1137.0 '@types/node': 24.13.6 '@types/oauth@0.9.6': @@ -55840,12 +56413,6 @@ snapshots: pg-protocol: 1.10.3 pg-types: 2.2.0 - '@types/plist@3.0.5': - dependencies: - '@types/node': 24.13.6 - xmlbuilder: 15.1.1 - optional: true - '@types/png-chunks-extract@1.0.2': {} '@types/pug@2.0.10': {} @@ -55878,13 +56445,9 @@ snapshots: dependencies: '@types/node': 24.13.6 - '@types/retry@0.12.0': {} - - '@types/sanitize-html@2.16.0': + '@types/sanitize-html@2.16.2': dependencies: - htmlparser2: 8.0.2 - - '@types/semver@7.7.1': {} + htmlparser2: 12.0.0 '@types/send@0.17.6': dependencies: @@ -55905,12 +56468,13 @@ snapshots: '@types/node': 24.13.6 '@types/send': 0.17.6 - '@types/snappyjs@0.7.1': {} - - '@types/sockjs@0.3.36': + '@types/serve-static@2.2.0': dependencies: + '@types/http-errors': 2.0.5 '@types/node': 24.13.6 + '@types/snappyjs@0.7.1': {} + '@types/stack-utils@2.0.3': {} '@types/strip-bom@3.0.0': {} @@ -55940,9 +56504,6 @@ snapshots: '@types/uuid@8.3.4': {} - '@types/verror@1.10.11': - optional: true - '@types/web-push@3.6.4': dependencies: '@types/node': 24.13.6 @@ -55963,102 +56524,177 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@types/yauzl@2.10.3': + '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: - '@types/node': 24.13.6 - optional: true + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/type-utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.71.1 + eslint: 9.39.5(jiti@2.7.0) + ignore: 7.0.12 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3 - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - semver: 7.7.3 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: + eslint: 9.39.5(jiti@2.7.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/project-service@8.71.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@5.9.3) + '@typescript-eslint/types': 8.71.1 debug: 4.4.3 - eslint: 8.57.1 - optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@6.21.0': + '@typescript-eslint/scope-manager@8.71.1': + dependencies: + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 + + '@typescript-eslint/tsconfig-utils@8.71.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + typescript: 5.9.3 - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) debug: 4.4.3 - eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: + eslint: 9.39.5(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@6.21.0': {} + '@typescript-eslint/types@8.71.1': {} - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.71.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/project-service': 8.71.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@5.9.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 10.2.6 semver: 7.7.3 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.7.1 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - eslint: 8.57.1 - semver: 7.7.3 + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@6.21.0': + '@typescript-eslint/visitor-keys@8.71.1': dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.71.1 + eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.0': {} - '@vercel/webpack-asset-relocator-loader@1.10.0(encoding@0.1.13)': + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + optional: true + + '@unrs/resolver-binding-android-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': dependencies: - '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + optional: true + + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + '@vercel/webpack-asset-relocator-loader@1.10.0': + dependencies: + '@mapbox/node-pre-gyp': 2.0.0 acorn: 8.15.0 acorn-class-fields: 1.0.0(acorn@8.15.0) acorn-private-class-elements: 1.0.0(acorn@8.15.0) @@ -56154,22 +56790,22 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.102.1)': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.111.1)': dependencies: - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@6.0.0)(webpack@5.111.1) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.102.1)': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.111.1)': dependencies: - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@6.0.0)(webpack@5.111.1) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.2)(webpack@5.102.1)': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@6.0.0)(webpack@5.111.1)': dependencies: - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@6.0.0)(webpack@5.111.1) optionalDependencies: - webpack-dev-server: 4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1) + webpack-dev-server: 6.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.111.1) '@wolfy1339/lru-cache@11.0.2-patch.1': {} @@ -56193,6 +56829,8 @@ snapshots: abbrev@3.0.1: {} + abbrev@4.0.0: {} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -56202,14 +56840,15 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-class-fields@1.0.0(acorn@8.15.0): + accepts@2.0.0: dependencies: - acorn: 8.15.0 - acorn-private-class-elements: 1.0.0(acorn@8.15.0) + mime-types: 3.0.2 + negotiator: 1.1.0 - acorn-import-phases@1.0.4(acorn@8.15.0): + acorn-class-fields@1.0.0(acorn@8.15.0): dependencies: acorn: 8.15.0 + acorn-private-class-elements: 1.0.0(acorn@8.15.0) acorn-jsx@5.3.2(acorn@8.15.0): dependencies: @@ -56251,6 +56890,10 @@ snapshots: dependencies: ajv: 8.17.1 + ajv-formats@3.0.1: + dependencies: + ajv: 8.20.0 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -56260,6 +56903,11 @@ snapshots: ajv: 8.17.1 fast-deep-equal: 3.1.3 + ajv-keywords@5.1.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + fast-deep-equal: 3.1.3 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -56267,6 +56915,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -56274,16 +56929,23 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - allure-js-commons@3.4.2(allure-playwright@3.4.2(@playwright/test@1.56.1)): + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + allure-js-commons@3.13.0(allure-playwright@3.13.0(@playwright/test@1.63.0)): dependencies: md5: 2.3.0 optionalDependencies: - allure-playwright: 3.4.2(@playwright/test@1.56.1) + allure-playwright: 3.13.0(@playwright/test@1.63.0) - allure-playwright@3.4.2(@playwright/test@1.56.1): + allure-playwright@3.13.0(@playwright/test@1.63.0): dependencies: - '@playwright/test': 1.56.1 - allure-js-commons: 3.4.2(allure-playwright@3.4.2(@playwright/test@1.56.1)) + '@playwright/test': 1.63.0 + allure-js-commons: 3.13.0(allure-playwright@3.13.0(@playwright/test@1.63.0)) ansi-escapes@4.3.2: dependencies: @@ -56334,48 +56996,53 @@ snapshots: ts-invariant: 0.4.4 tslib: 1.14.1 - app-builder-bin@5.0.0-alpha.10: {} - - app-builder-lib@25.1.8(dmg-builder@25.1.8): + app-builder-lib@26.15.3(dmg-builder@26.15.3): dependencies: - '@develar/schema-utils': 2.6.5 + '@electron/asar': 3.4.1 + '@electron/fuses': 1.8.0 + '@electron/get': 3.1.0 '@electron/notarize': 2.5.0 - '@electron/osx-sign': 1.3.1 - '@electron/rebuild': 3.6.1 - '@electron/universal': 2.0.1 + '@electron/osx-sign': 1.3.3 + '@electron/rebuild': 4.2.1 + '@electron/universal': 2.0.3 '@malept/flatpak-bundler': 0.4.0 + '@noble/hashes': 2.4.0 + '@peculiar/webcrypto': 1.7.1 '@types/fs-extra': 9.0.13 + ajv: 8.20.0 + asn1js: 3.0.10 async-exit-hook: 2.0.1 - bluebird-lst: 1.0.9 - builder-util: 25.1.7 - builder-util-runtime: 9.2.10 + builder-util: 26.15.3 + builder-util-runtime: 9.7.0 chromium-pickle-js: 0.2.0 - config-file-ts: 0.2.8-rc1 + ci-info: 4.3.1 debug: 4.4.3 - dmg-builder: 25.1.8 + dmg-builder: 26.15.3 dotenv: 16.6.1 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-publish: 25.1.7 - form-data: 4.0.4 + electron-publish: 26.15.3 fs-extra: 10.1.0 hosted-git-info: 4.1.0 - is-ci: 3.0.1 isbinaryfile: 5.0.6 - js-yaml: 4.1.0 + jiti: 2.7.0 + js-yaml: 4.3.2 json5: 2.2.3 lazy-val: 1.0.5 - minimatch: 10.1.1 + minimatch: 10.2.6 + pkijs: 3.4.1 + plist: 3.1.0 + proper-lockfile: 4.1.2 resedit: 1.7.2 - sanitize-filename: 1.6.3 semver: 7.7.3 - tar: 6.2.1 + tar: 7.5.22 temp-file: 3.4.0 + tiny-async-pool: 1.3.0 + unzipper: 0.12.5 + which: 5.0.0 transitivePeerDependencies: - supports-color - aproba@2.1.0: {} - archiver-utils@5.0.2: dependencies: glob: 10.4.5 @@ -56399,11 +57066,6 @@ snapshots: - bare-abort-controller - react-native-b4a - are-we-there-yet@3.0.1: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - arg@4.1.3: {} arg@5.0.2: {} @@ -56483,11 +57145,11 @@ snapshots: minimalistic-assert: 1.0.1 safer-buffer: 2.1.2 - assert-plus@1.0.0: - optional: true - - astral-regex@2.0.0: - optional: true + asn1js@3.0.10: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.2.0 + tslib: 2.8.1 async-exit-hook@2.0.1: {} @@ -56513,53 +57175,52 @@ snapshots: dependencies: tslib: 2.8.1 - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.21(postcss@8.5.28): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001754 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.6 + postcss: 8.5.28 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 + aws4@1.13.2: {} + axobject-query@4.1.0: {} b4a@1.7.3: {} - babel-jest@29.7.0(@babel/core@7.28.5): + babel-jest@30.5.2(@babel/core@7.28.5): dependencies: '@babel/core': 7.28.5 - '@jest/transform': 29.7.0 + '@jest/transform': 30.5.2 '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.28.5) + babel-plugin-istanbul: 8.0.0 + babel-preset-jest: 30.5.0(@babel/core@7.28.5) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-plugin-istanbul@6.1.1: + babel-plugin-istanbul@8.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: 5.2.1 - test-exclude: 6.0.0 + istanbul-lib-instrument: 6.0.3 + test-exclude: 7.0.2 transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@29.6.3: + babel-plugin-jest-hoist@30.5.0: dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.28.0 babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): dependencies: @@ -56580,14 +57241,16 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) - babel-preset-jest@29.6.3(@babel/core@7.28.5): + babel-preset-jest@30.5.0(@babel/core@7.28.5): dependencies: '@babel/core': 7.28.5 - babel-plugin-jest-hoist: 29.6.3 + babel-plugin-jest-hoist: 30.5.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + bare-events@2.8.2: {} base64-arraybuffer@1.0.2: @@ -56619,20 +57282,10 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - block-stream2@2.1.0: dependencies: readable-stream: 3.6.2 - bluebird-lst@1.0.9: - dependencies: - bluebird: 3.7.2 - bluebird@3.4.7: {} bluebird@3.7.2: {} @@ -56660,6 +57313,20 @@ snapshots: type-is: 1.6.18 unpipe: 1.0.0 + body-parser@2.3.0: + dependencies: + bytes: 3.1.2 + content-type: 2.1.0 + debug: 4.4.3 + http-errors: 2.0.1 + iconv-lite: 0.7.3 + on-finished: 2.4.1 + qs: 6.16.0 + raw-body: 3.0.2 + type-is: 2.1.0 + transitivePeerDependencies: + - supports-color + bonjour-service@1.3.0: dependencies: fast-deep-equal: 3.1.3 @@ -56683,6 +57350,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.12: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -56718,8 +57389,6 @@ snapshots: buffer-alloc-unsafe: 1.1.0 buffer-fill: 1.0.0 - buffer-crc32@0.2.13: {} - buffer-crc32@1.0.0: {} buffer-equal-constant-time@1.0.1: {} @@ -56753,44 +57422,35 @@ snapshots: dependencies: node-gyp-build: 4.8.4 - builder-util-runtime@9.2.10: - dependencies: - debug: 4.4.3 - sax: 1.4.3 - transitivePeerDependencies: - - supports-color - - builder-util-runtime@9.3.1: + builder-util-runtime@9.7.0: dependencies: debug: 4.4.3 sax: 1.4.3 transitivePeerDependencies: - supports-color - builder-util@25.1.7: + builder-util@26.15.3: dependencies: - 7zip-bin: 5.2.0 '@types/debug': 4.1.12 - app-builder-bin: 5.0.0-alpha.10 - bluebird-lst: 1.0.9 - builder-util-runtime: 9.2.10 + builder-util-runtime: 9.7.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 fs-extra: 10.1.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 - is-ci: 3.0.1 - js-yaml: 4.1.0 + js-yaml: 4.3.2 + sanitize-filename: 1.6.3 source-map-support: 0.5.21 stat-mode: 1.0.0 temp-file: 3.4.0 + tiny-async-pool: 1.3.0 transitivePeerDependencies: - supports-color - builtins@5.1.0: + bundle-name@4.1.1: dependencies: - semver: 7.7.3 + run-applescript: 7.1.0 busboy@1.6.0: dependencies: @@ -56798,26 +57458,7 @@ snapshots: bytes@3.1.2: {} - cacache@16.1.3: - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.1.0 - infer-owner: 1.0.4 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.2.1 - unique-filename: 2.0.1 + bytestreamjs@2.0.1: {} cache-content-type@1.0.1: dependencies: @@ -56939,34 +57580,20 @@ snapshots: lodash.reject: 4.6.0 lodash.some: 4.6.0 - cheerio@1.1.2: + cheerio@1.2.0: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.2.2 encoding-sniffer: 0.2.1 - htmlparser2: 10.0.0 + htmlparser2: 10.1.0 parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.18.2 + undici: 7.30.0 whatwg-mimetype: 4.0.0 - chevrotain-allstar@0.3.1(chevrotain@11.0.3): - dependencies: - chevrotain: 11.0.3 - lodash-es: 4.17.21 - - chevrotain@11.0.3: - dependencies: - '@chevrotain/cst-dts-gen': 11.0.3 - '@chevrotain/gast': 11.0.3 - '@chevrotain/regexp-to-ast': 11.0.3 - '@chevrotain/types': 11.0.3 - '@chevrotain/utils': 11.0.3 - lodash-es: 4.17.21 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -56983,7 +57610,9 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@2.0.0: {} + chokidar@5.0.0: + dependencies: + readdirp: 5.1.1 chownr@3.0.0: {} @@ -56997,12 +57626,8 @@ snapshots: chromium-pickle-js@0.2.0: {} - ci-info@3.9.0: {} - ci-info@4.3.1: {} - cjs-module-lexer@1.4.3: {} - cjs-module-lexer@2.2.1: {} clean-css@5.3.3: @@ -57011,18 +57636,6 @@ snapshots: clean-stack@2.2.0: {} - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-spinners@2.9.2: {} - - cli-truncate@2.1.0: - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - optional: true - cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 @@ -57062,13 +57675,11 @@ snapshots: dependencies: mimic-response: 1.0.1 - clone@1.0.4: {} - co-body@6.2.0: dependencies: '@hapi/bourne': 3.0.0 inflation: 2.1.0 - qs: 6.11.2 + qs: 6.16.0 raw-body: 2.5.2 type-is: 1.6.18 @@ -57113,8 +57724,6 @@ snapshots: dependencies: color-name: 2.0.2 - color-support@1.1.3: {} - color@3.2.1: dependencies: color-convert: 1.9.3 @@ -57170,11 +57779,11 @@ snapshots: dependencies: mime-db: 1.54.0 - compression-webpack-plugin@10.0.0(webpack@5.102.1): + compression-webpack-plugin@12.0.0(webpack@5.111.1): dependencies: schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + serialize-javascript: 7.1.2 + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) compression@1.8.1: dependencies: @@ -57205,35 +57814,26 @@ snapshots: confbox@0.2.2: {} - config-file-ts@0.2.8-rc1: - dependencies: - glob: 10.4.5 - typescript: 5.9.3 - connect-history-api-fallback@2.0.0: {} - connect-multiparty@2.2.0: - dependencies: - http-errors: 1.7.3 - multiparty: 4.2.3 - on-finished: 2.3.0 - qs: 6.5.3 - type-is: 1.6.18 - consola@3.4.2: {} - console-control-strings@1.1.0: {} - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 + content-disposition@1.1.0: {} + content-type@1.0.5: {} + content-type@2.1.0: {} + convert-source-map@2.0.0: {} cookie-signature@1.0.6: {} + cookie-signature@1.2.2: {} + cookie@0.7.1: {} cookiejar@2.1.4: {} @@ -57245,24 +57845,20 @@ snapshots: copy-to@2.0.1: {} - copy-webpack-plugin@11.0.0(webpack@5.102.1): + copy-webpack-plugin@14.0.0(webpack@5.111.1): dependencies: - fast-glob: 3.3.3 glob-parent: 6.0.2 - globby: 13.2.2 normalize-path: 3.0.0 schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + serialize-javascript: 7.1.2 + tinyglobby: 0.2.17 + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) core-js@3.46.0: {} - core-util-is@1.0.2: - optional: true - core-util-is@1.0.3: {} - cors@2.8.5: + cors@2.8.6: dependencies: object-assign: 4.1.1 vary: 1.1.2 @@ -57278,7 +57874,7 @@ snapshots: cosmiconfig@8.3.6(typescript@5.9.3): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.3.2 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -57297,21 +57893,6 @@ snapshots: dependencies: buffer: 5.7.1 - create-jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - create-require@1.1.1: {} crelt@1.0.6: {} @@ -57322,9 +57903,9 @@ snapshots: dependencies: cross-spawn: 7.0.6 - cross-fetch@3.2.0(encoding@0.1.13): + cross-fetch@3.2.0: dependencies: - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 transitivePeerDependencies: - encoding @@ -57351,19 +57932,19 @@ snapshots: utrie: 1.0.2 optional: true - css-loader@5.2.7(webpack@5.102.1): + css-loader@5.2.7(webpack@5.111.1): dependencies: - icss-utils: 5.1.0(postcss@8.5.6) + icss-utils: 5.1.0(postcss@8.5.28) loader-utils: 2.0.4 - postcss: 8.5.6 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) - postcss-modules-scope: 3.2.1(postcss@8.5.6) - postcss-modules-values: 4.0.0(postcss@8.5.6) + postcss: 8.5.28 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.28) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.28) + postcss-modules-scope: 3.2.1(postcss@8.5.28) + postcss-modules-values: 4.0.0(postcss@8.5.28) postcss-value-parser: 4.2.0 schema-utils: 3.3.0 semver: 7.7.3 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) css-select@1.2.0: dependencies: @@ -57415,7 +57996,7 @@ snapshots: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 - csv-parse@5.1.0: {} + csv-parse@7.0.3: {} csv-stringify@6.6.0: {} @@ -57427,17 +58008,17 @@ snapshots: custom-event-polyfill@1.0.7: {} - cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.3): dependencies: cose-base: 1.0.3 - cytoscape: 3.33.1 + cytoscape: 3.34.3 - cytoscape-fcose@2.2.0(cytoscape@3.33.1): + cytoscape-fcose@2.2.0(cytoscape@3.34.3): dependencies: cose-base: 2.2.0 - cytoscape: 3.33.1 + cytoscape: 3.34.3 - cytoscape@3.33.1: {} + cytoscape@3.34.3: {} d3-array@2.12.1: dependencies: @@ -57611,7 +58192,7 @@ snapshots: es5-ext: 0.10.64 type: 2.7.3 - dagre-d3-es@7.0.13: + dagre-d3-es@7.0.14: dependencies: d3: 7.9.0 lodash-es: 4.17.21 @@ -57649,7 +58230,7 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 - dayjs@1.11.19: {} + dayjs@1.11.23: {} debounce-fn@4.0.0: dependencies: @@ -57689,13 +58270,12 @@ snapshots: deepmerge@4.3.1: {} - default-gateway@6.0.3: - dependencies: - execa: 5.1.1 + default-browser-id@5.0.1: {} - defaults@1.0.4: + default-browser@5.5.1: dependencies: - clone: 1.0.4 + bundle-name: 4.1.1 + default-browser-id: 5.0.1 defer-to-connect@2.0.1: {} @@ -57705,7 +58285,7 @@ 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: dependencies: @@ -57744,7 +58324,8 @@ snapshots: detect-newline@3.1.0: {} - detect-node@2.1.0: {} + detect-node@2.1.0: + optional: true devlop@1.1.0: dependencies: @@ -57759,8 +58340,6 @@ snapshots: didyoumean@1.2.2: {} - diff-sequences@29.6.3: {} - diff2html@3.4.52: dependencies: diff: 7.0.0 @@ -57791,32 +58370,16 @@ snapshots: dlv@1.1.3: {} - dmg-builder@25.1.8: + dmg-builder@26.15.3: dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8) - builder-util: 25.1.7 - builder-util-runtime: 9.2.10 + app-builder-lib: 26.15.3(dmg-builder@26.15.3) + builder-util: 26.15.3 fs-extra: 10.1.0 - iconv-lite: 0.6.3 - js-yaml: 4.1.0 - optionalDependencies: - dmg-license: 1.0.11 + js-yaml: 4.3.2 transitivePeerDependencies: - electron-builder-squirrel-windows - supports-color - dmg-license@1.0.11: - dependencies: - '@types/plist': 3.0.5 - '@types/verror': 1.10.11 - ajv: 6.12.6 - crc: 3.8.0 - iconv-corefoundation: 1.1.7 - plist: 3.1.0 - smart-buffer: 4.2.0 - verror: 1.10.1 - optional: true - dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 @@ -57825,10 +58388,6 @@ snapshots: dependencies: esutils: 2.0.3 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - docx4js@3.3.0: dependencies: cfb: 0.12.1 @@ -57865,12 +58424,20 @@ snapshots: domhandler: 5.0.3 entities: 4.5.0 + dom-serializer@3.1.1: + dependencies: + domelementtype: 3.0.0 + domhandler: 6.0.1 + entities: 8.1.0 + dom-walk@0.1.2: {} domelementtype@1.3.1: {} domelementtype@2.3.0: {} + domelementtype@3.0.0: {} + domhandler@2.4.2: dependencies: domelementtype: 1.3.1 @@ -57883,10 +58450,14 @@ snapshots: dependencies: domelementtype: 2.3.0 + domhandler@6.0.1: + dependencies: + domelementtype: 3.0.0 + dompurify@2.5.9: optional: true - dompurify@3.3.0: + dompurify@3.4.16: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -57912,6 +58483,12 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + domutils@4.0.2: + dependencies: + dom-serializer: 3.1.1 + domelementtype: 3.0.0 + domhandler: 6.0.1 + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -57929,10 +58506,10 @@ snapshots: dependencies: dotenv: 16.6.1 - dotenv-webpack@8.1.1(webpack@5.102.1): + dotenv-webpack@8.1.1(webpack@5.111.1): dependencies: dotenv-defaults: 2.0.2 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) dotenv@16.6.1: {} @@ -57948,6 +58525,10 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + duplexer@0.1.2: {} dynamic-dedupe@0.3.0: @@ -57968,15 +58549,15 @@ snapshots: dependencies: jake: 10.9.4 - electron-builder@25.1.8: + electron-builder@26.15.3: dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8) - builder-util: 25.1.7 - builder-util-runtime: 9.2.10 + app-builder-lib: 26.15.3(dmg-builder@26.15.3) + builder-util: 26.15.3 + builder-util-runtime: 9.7.0 chalk: 4.1.2 - dmg-builder: 25.1.8 + ci-info: 4.3.1 + dmg-builder: 26.15.3 fs-extra: 10.1.0 - is-ci: 3.0.1 lazy-val: 1.0.5 simple-update-notifier: 2.0.0 yargs: 17.7.2 @@ -57984,7 +58565,7 @@ snapshots: - electron-builder-squirrel-windows - supports-color - electron-context-menu@4.1.1: + electron-context-menu@4.1.2: dependencies: cli-truncate: 4.0.0 electron-dl: 4.0.0 @@ -57998,14 +58579,16 @@ snapshots: electron-is-dev@3.0.1: {} - electron-log@5.4.3: {} + electron-log@5.4.4: {} - electron-publish@25.1.7: + electron-publish@26.15.3: dependencies: '@types/fs-extra': 9.0.13 - builder-util: 25.1.7 - builder-util-runtime: 9.2.10 + aws4: 1.13.2 + builder-util: 26.15.3 + builder-util-runtime: 9.7.0 chalk: 4.1.2 + form-data: 4.0.6 fs-extra: 10.1.0 lazy-val: 1.0.5 mime: 2.6.0 @@ -58023,11 +58606,11 @@ snapshots: electron-to-chromium@1.5.366: {} - electron-updater@6.6.2: + electron-updater@6.8.9: dependencies: - builder-util-runtime: 9.3.1 + builder-util-runtime: 9.7.0 fs-extra: 10.1.0 - js-yaml: 4.1.0 + js-yaml: 4.3.2 lazy-val: 1.0.5 lodash.escaperegexp: 4.1.2 lodash.isequal: 4.5.0 @@ -58038,11 +58621,11 @@ snapshots: electron-windows-badge@1.1.0: {} - electron@38.6.0: + electron@43.7.8: dependencies: - '@electron/get': 2.0.3 - '@types/node': 22.19.0 - extract-zip: 2.0.1 + '@electron-internal/extract-zip': 1.0.5 + '@electron/get': 5.1.0 + '@types/node': 24.13.6 transitivePeerDependencies: - supports-color @@ -58082,11 +58665,6 @@ snapshots: iconv-lite: 0.6.3 whatwg-encoding: 3.1.1 - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - optional: true - end-of-stream@1.4.5: dependencies: once: 1.4.0 @@ -58096,6 +58674,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.0 + enhanced-resolve@5.26.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + entities@1.1.2: {} entities@2.2.0: {} @@ -58106,8 +58689,14 @@ snapshots: entities@6.0.1: {} + entities@7.0.1: {} + + entities@8.1.0: {} + env-paths@2.2.1: {} + env-paths@3.0.0: {} + envinfo@7.20.0: {} err-code@2.0.3: {} @@ -58177,7 +58766,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.7.0: {} + es-module-lexer@2.3.2: {} es-module-lexer@3.0.2: {} @@ -58190,7 +58779,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 es-shim-unscopables@1.1.0: dependencies: @@ -58202,6 +58791,8 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + es-toolkit@1.52.0: {} + es5-ext@0.10.64: dependencies: es6-iterator: 2.0.3 @@ -58225,12 +58816,12 @@ snapshots: d: 1.0.2 ext: 1.7.0 - esbuild-loader@4.4.0(webpack@5.102.1): + esbuild-loader@4.4.0(webpack@5.111.1): dependencies: esbuild: 0.25.12 get-tsconfig: 4.13.0 loader-utils: 2.0.4 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) webpack-sources: 1.4.3 esbuild-plugin-copy@2.1.1(esbuild@0.25.12): @@ -58288,34 +58879,27 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@8.57.1): + eslint-compat-utils@0.5.1(eslint@9.39.5(jiti@2.7.0)): dependencies: - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) semver: 7.7.3 - eslint-config-prettier@8.10.2(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-config-standard-with-typescript@40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3): + eslint-config-love@157.0.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(eslint@8.57.1) - eslint-plugin-n: 15.7.0(eslint@8.57.1) - eslint-plugin-promise: 6.6.0(eslint@8.57.1) + '@eslint-community/eslint-plugin-eslint-comments': 4.8.1(eslint@9.39.5(jiti@2.7.0)) + '@typescript-eslint/utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0) + eslint-plugin-n: 18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint-plugin-promise: 7.3.0(eslint@9.39.5(jiti@2.7.0)) typescript: 5.9.3 + typescript-eslint: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) transitivePeerDependencies: - supports-color + - ts-declaration-location - eslint-config-standard@17.1.0(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1): + eslint-config-prettier@8.10.2(eslint@9.39.5(jiti@2.7.0)): dependencies: - eslint: 8.57.1 - eslint-plugin-import: 2.32.0(eslint@8.57.1) - eslint-plugin-n: 15.7.0(eslint@8.57.1) - eslint-plugin-promise: 6.6.0(eslint@8.57.1) + eslint: 9.39.5(jiti@2.7.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -58323,25 +58907,20 @@ snapshots: is-core-module: 2.16.1 resolve: 1.22.11 - eslint-module-utils@2.12.1(eslint@8.57.1): + eslint-module-utils@2.12.1(eslint@9.39.5(jiti@2.7.0)): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) - eslint-plugin-es@3.0.1(eslint@8.57.1): + eslint-plugin-es-x@7.8.0(eslint@9.39.5(jiti@2.7.0)): dependencies: - eslint: 8.57.1 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - - eslint-plugin-es@4.1.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-utils: 2.1.0 - regexpp: 3.2.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + eslint: 9.39.5(jiti@2.7.0) + eslint-compat-utils: 0.5.1(eslint@9.39.5(jiti@2.7.0)) - eslint-plugin-import@2.32.0(eslint@8.57.1): + eslint-plugin-import@2.32.0(eslint@9.39.5(jiti@2.7.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -58350,9 +58929,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint@8.57.1) + eslint-module-utils: 2.12.1(eslint@9.39.5(jiti@2.7.0)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -58364,116 +58943,105 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 - eslint-plugin-n@15.7.0(eslint@8.57.1): + eslint-plugin-n@18.4.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3): dependencies: - builtins: 5.1.0 - eslint: 8.57.1 - eslint-plugin-es: 4.1.0(eslint@8.57.1) - eslint-utils: 3.0.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5(jiti@2.7.0)) + enhanced-resolve: 5.18.3 + eslint: 9.39.5(jiti@2.7.0) + eslint-plugin-es-x: 7.8.0(eslint@9.39.5(jiti@2.7.0)) + get-tsconfig: 4.13.0 + globals: 15.15.0 + globrex: 0.1.2 ignore: 5.3.2 - is-core-module: 2.16.1 - minimatch: 3.1.2 - resolve: 1.22.11 + js-yaml: 5.4.3 semver: 7.7.3 + optionalDependencies: + typescript: 5.9.3 - eslint-plugin-node@11.1.0(eslint@8.57.1): + eslint-plugin-promise@7.3.0(eslint@9.39.5(jiti@2.7.0)): dependencies: - eslint: 8.57.1 - eslint-plugin-es: 3.0.1(eslint@8.57.1) - eslint-utils: 2.1.0 - ignore: 5.3.2 - minimatch: 3.1.2 - resolve: 1.22.11 - semver: 6.3.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5(jiti@2.7.0)) + eslint: 9.39.5(jiti@2.7.0) - eslint-plugin-promise@6.6.0(eslint@8.57.1): + eslint-plugin-secure-coding@5.4.16(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3): dependencies: - eslint: 8.57.1 + '@eslint-community/regexpp': 4.12.2 + '@interlace/eslint-devkit': 1.19.8(@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0) + refa: 0.12.1 + scslre: 0.3.0 + transitivePeerDependencies: + - '@typescript-eslint/utils' + - oxc-resolver + - typescript - eslint-plugin-svelte@2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): + eslint-plugin-svelte@3.23.0(eslint@9.39.5(jiti@2.7.0))(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5(jiti@2.7.0)) '@jridgewell/sourcemap-codec': 1.5.5 - eslint: 8.57.1 - eslint-compat-utils: 0.5.1(eslint@8.57.1) + eslint: 9.39.5(jiti@2.7.0) esutils: 2.0.3 - known-css-properties: 0.35.0 - postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - postcss-safe-parser: 6.0.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 + globals: 16.5.0 + known-css-properties: 0.37.0 + postcss: 8.5.28 + postcss-load-config: 3.1.4(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + postcss-safe-parser: 7.1.0(postcss@8.5.28) semver: 7.7.3 - svelte-eslint-parser: 0.43.0(svelte@4.2.20) + svelte-eslint-parser: 1.8.1(svelte@4.2.20) optionalDependencies: svelte: 4.2.20 transitivePeerDependencies: - ts-node - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@7.2.2: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@2.1.0: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-utils@3.0.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 2.1.0 - - eslint-visitor-keys@1.3.0: {} + eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@2.1.0: {} + eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@5.0.1: {} - eslint@8.57.1: + eslint@9.39.5(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.7 + '@eslint/js': 9.39.5 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.12.6 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 + optionalDependencies: + jiti: 2.7.0 transitivePeerDependencies: - supports-color @@ -58484,11 +59052,11 @@ snapshots: event-emitter: 0.3.5 type: 2.7.3 - espree@9.6.1: + espree@10.4.0: dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 3.4.3 + eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -58500,8 +59068,6 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-walker@0.6.1: {} @@ -58559,15 +59125,16 @@ snapshots: exif-parser@0.1.12: {} - exit@0.1.2: {} + exit-x@0.2.2: {} - expect@29.7.0: + expect@30.5.2: dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + '@jest/expect-utils': 30.5.2 + '@jest/get-type': 30.5.0 + jest-matcher-utils: 30.5.2 + jest-message-util: 30.5.1 + jest-mock: 30.5.2 + jest-util: 30.5.1 exponential-backoff@3.1.3: {} @@ -58575,11 +59142,14 @@ snapshots: dependencies: busboy: 1.6.0 - express-form-data@2.0.23: + express-form-data@3.0.1: dependencies: - connect-multiparty: 2.2.0 fs-extra: 9.1.0 + http-errors: 2.0.0 + multiparty: 4.2.3 + on-finished: 2.4.1 signal-exit: 3.0.7 + type-is: 2.1.0 express-rate-limit@7.5.1(express@4.21.2): dependencies: @@ -58624,6 +59194,39 @@ snapshots: utils-merge: 1.0.1 vary: 1.1.2 + express@5.2.1: + dependencies: + accepts: 2.0.0 + body-parser: 2.3.0 + content-disposition: 1.1.0 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.2.2 + debug: 4.4.3 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.1 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.2 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.16.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 + statuses: 2.0.1 + type-is: 2.1.0 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + exsolve@1.0.7: {} ext-list@2.2.2: @@ -58641,19 +59244,6 @@ snapshots: extend@3.0.2: {} - extract-zip@2.0.1: - dependencies: - debug: 4.4.3 - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - - extsprintf@1.4.1: - optional: true - fast-copy@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -58696,23 +59286,27 @@ snapshots: strnum: 2.4.2 xml-naming: 0.3.0 + fastdom@1.0.12: + dependencies: + strictdom: 1.0.1 + fastest-levenshtein@1.0.16: {} fastq@1.19.1: dependencies: reusify: 1.1.0 - faye-websocket@0.11.4: - 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 + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 fecha@4.2.3: {} @@ -58734,17 +59328,24 @@ snapshots: mime: 3.0.0 remedial: 1.0.8 - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 file-error@0.10.2: {} - file-loader@6.2.0(webpack@5.102.1): + file-loader@6.2.0(webpack@5.111.1(postcss@8.5.28)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(postcss@8.5.28) + optional: true + + file-loader@6.2.0(webpack@5.111.1): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) file-stream-rotator@0.6.1: dependencies: @@ -58782,6 +59383,17 @@ snapshots: statuses: 2.0.1 unpipe: 1.0.0 + finalhandler@2.1.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -58796,11 +59408,10 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.3 keyv: 4.5.4 - rimraf: 3.0.2 flat@5.0.2: {} @@ -58821,7 +59432,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@9.1.0(typescript@5.9.3)(webpack@5.102.1): + fork-ts-checker-webpack-plugin@9.1.0(typescript@5.9.3)(webpack@5.111.1): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -58836,7 +59447,7 @@ snapshots: semver: 7.7.3 tapable: 2.3.0 typescript: 5.9.3 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) form-data-encoder@1.7.2: {} @@ -58849,12 +59460,12 @@ snapshots: mime-types: 2.1.35 safe-buffer: 5.2.1 - form-data@4.0.4: + form-data@4.0.6: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 - hasown: 2.0.2 + hasown: 2.0.4 mime-types: 2.1.35 formdata-node@4.4.1: @@ -58880,7 +59491,7 @@ snapshots: '@paralleldrive/cuid2': 2.3.1 dezalgo: 1.0.4 once: 1.4.0 - qs: 6.11.2 + qs: 6.16.0 forwarded-parse@2.1.2: {} @@ -58890,12 +59501,20 @@ snapshots: fresh@0.5.2: {} + fresh@2.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.0 universalify: 2.0.1 + fs-extra@11.3.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + fs-extra@11.3.2: dependencies: graceful-fs: 4.2.11 @@ -58915,17 +59534,10 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs-monkey@1.1.0: {} fs.realpath@1.0.0: {} - fsevents@2.3.2: - optional: true - fsevents@2.3.3: optional: true @@ -58942,23 +59554,12 @@ snapshots: functions-have-names@1.2.3: {} - gauge@4.0.4: - dependencies: - aproba: 2.1.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - gaxios@5.1.3(encoding@0.1.13): + gaxios@5.1.3: dependencies: extend: 3.0.2 https-proxy-agent: 5.0.1 is-stream: 2.0.1 - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 transitivePeerDependencies: - encoding - supports-color @@ -58972,9 +59573,9 @@ snapshots: transitivePeerDependencies: - supports-color - gcp-metadata@5.3.0(encoding@0.1.13): + gcp-metadata@5.3.0: dependencies: - gaxios: 5.1.3(encoding@0.1.13) + gaxios: 5.1.3 json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -59053,7 +59654,9 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} + glob-to-regex.js@1.3.1(tslib@2.8.1): + dependencies: + tslib: 2.8.1 glob@10.4.5: dependencies: @@ -59064,6 +59667,12 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@13.0.6: + dependencies: + minimatch: 10.2.6 + minipass: 7.1.3 + path-scurry: 2.0.2 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -59073,14 +59682,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - global-agent@3.0.0: dependencies: boolean: 3.2.0 @@ -59096,12 +59697,12 @@ snapshots: min-document: 2.19.1 process: 0.11.10 - globals@13.24.0: - dependencies: - type-fest: 0.20.2 + globals@14.0.0: {} globals@15.15.0: {} + globals@16.5.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -59116,23 +59717,17 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 4.0.0 + globrex@0.1.2: {} - google-auth-library@8.9.0(encoding@0.1.13): + google-auth-library@8.9.0: dependencies: arrify: 2.0.1 base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 fast-text-encoding: 1.0.6 - gaxios: 5.1.3(encoding@0.1.13) - gcp-metadata: 5.3.0(encoding@0.1.13) - gtoken: 6.1.2(encoding@0.1.13) + gaxios: 5.1.3 + gcp-metadata: 5.3.0 + gtoken: 6.1.2 jws: 4.0.0 lru-cache: 6.0.0 transitivePeerDependencies: @@ -59143,24 +59738,24 @@ snapshots: google-p12-pem@4.0.1: dependencies: - node-forge: 1.3.1 + node-forge: 1.4.0 - googleapis-common@6.0.4(encoding@0.1.13): + googleapis-common@6.0.4: dependencies: extend: 3.0.2 - gaxios: 5.1.3(encoding@0.1.13) - google-auth-library: 8.9.0(encoding@0.1.13) - qs: 6.11.2 + gaxios: 5.1.3 + google-auth-library: 8.9.0 + qs: 6.16.0 url-template: 2.0.8 uuid: 9.0.1 transitivePeerDependencies: - encoding - supports-color - googleapis@122.0.0(encoding@0.1.13): + googleapis@122.0.0: dependencies: - google-auth-library: 8.9.0(encoding@0.1.13) - googleapis-common: 6.0.4(encoding@0.1.13) + google-auth-library: 8.9.0 + googleapis-common: 6.0.4 transitivePeerDependencies: - encoding - supports-color @@ -59183,8 +59778,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - graphql-binding@2.5.2: dependencies: graphql: 14.7.0 @@ -59217,9 +59810,9 @@ snapshots: graphql@16.12.0: {} - gtoken@6.1.2(encoding@0.1.13): + gtoken@6.1.2: dependencies: - gaxios: 5.1.3(encoding@0.1.13) + gaxios: 5.1.3 google-p12-pem: 4.0.1 jws: 4.0.0 transitivePeerDependencies: @@ -59232,9 +59825,7 @@ snapshots: hachure-fill@0.5.2: {} - handle-thing@2.0.1: {} - - handlebars@4.7.8: + handlebars@4.7.10: dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -59261,14 +59852,16 @@ snapshots: dependencies: has-symbols: 1.1.0 - has-unicode@2.0.1: {} - hash-it@6.0.0: {} hasown@2.0.2: dependencies: function-bind: 1.1.2 + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + he@1.2.0: {} heic-decode@2.1.0: @@ -59291,21 +59884,12 @@ snapshots: dependencies: lru-cache: 6.0.0 - hpack.js@2.1.6: - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - hpagent@0.1.2: {} html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 - html-entities@2.6.0: {} - html-escaper@2.0.2: {} html-minifier-terser@6.1.0: @@ -59326,7 +59910,7 @@ snapshots: htmlparser2: 8.0.2 selderee: 0.11.0 - html-webpack-plugin@5.6.4(webpack@5.102.1): + html-webpack-plugin@5.6.4(webpack@5.111.1): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -59334,7 +59918,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) html2canvas@1.4.1: dependencies: @@ -59342,12 +59926,19 @@ snapshots: text-segmentation: 1.0.3 optional: true - htmlparser2@10.0.0: + htmlparser2@10.1.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 6.0.1 + entities: 7.0.1 + + htmlparser2@12.0.0: + dependencies: + domelementtype: 3.0.0 + domhandler: 6.0.1 + domutils: 4.0.2 + entities: 8.1.0 htmlparser2@3.10.1: dependencies: @@ -59372,13 +59963,6 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 - htmlparser2@9.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - http-assert@1.5.0: dependencies: deep-equal: 1.0.1 @@ -59386,23 +59970,6 @@ snapshots: http-cache-semantics@4.2.0: {} - http-deceiver@1.2.7: {} - - http-errors@1.6.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - - http-errors@1.7.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 - http-errors@1.8.1: dependencies: depd: 1.1.2 @@ -59419,15 +59986,13 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-parser-js@0.5.10: {} - - http-proxy-agent@5.0.0: + http-errors@2.0.1: dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 http-proxy-agent@7.0.2: dependencies: @@ -59436,25 +60001,15 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.25): + http-proxy-middleware@4.2.0: dependencies: - '@types/http-proxy': 1.17.17 - http-proxy: 1.18.1 + debug: 4.4.3 + httpxy: 0.5.5 is-glob: 4.0.3 - is-plain-obj: 3.0.0 + is-plain-obj: 4.1.0 micromatch: 4.0.8 - optionalDependencies: - '@types/express': 4.17.25 - transitivePeerDependencies: - - debug - - http-proxy@1.18.1: - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.11 - requires-port: 1.0.0 transitivePeerDependencies: - - debug + - supports-color http2-wrapper@1.0.3: dependencies: @@ -59477,17 +60032,15 @@ snapshots: transitivePeerDependencies: - supports-color + httpxy@0.5.5: {} + human-signals@2.1.0: {} humanize-ms@1.2.1: dependencies: ms: 2.1.3 - iconv-corefoundation@1.1.7: - dependencies: - cli-truncate: 2.1.0 - node-addon-api: 1.7.2 - optional: true + hyperdyperid@1.2.0: {} iconv-lite@0.4.24: dependencies: @@ -59497,21 +60050,25 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.6): + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.5.28): dependencies: - postcss: 8.5.6 + postcss: 8.5.28 ieee754@1.2.1: {} ignore@5.3.2: {} + ignore@7.0.12: {} + image-q@4.0.0: dependencies: '@types/node': 16.9.1 - image-size@1.2.1: - dependencies: - queue: 6.0.2 + image-size@2.0.4: {} immediate@3.0.6: {} @@ -59537,8 +60094,6 @@ snapshots: indent-string@4.0.0: {} - infer-owner@1.0.4: {} - inflation@2.1.0: {} inflight@1.0.6: @@ -59546,8 +60101,6 @@ snapshots: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.3: {} - inherits@2.0.4: {} install@0.13.0: {} @@ -59579,6 +60132,8 @@ snapshots: ipaddr.js@2.2.0: {} + ipaddr.js@2.5.0: {} + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -59614,10 +60169,6 @@ snapshots: is-callable@1.2.7: {} - is-ci@3.0.1: - dependencies: - ci-info: 3.9.0 - is-class-hotfix@0.0.6: {} is-core-module@2.16.1: @@ -59635,7 +60186,7 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-docker@2.2.1: {} + is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -59669,14 +60220,18 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-interactive@1.0.0: {} + is-in-ssh@1.0.0: {} - is-lambda@1.0.1: {} + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 is-map@2.0.3: {} is-negative-zero@2.0.3: {} + is-network-error@1.3.2: {} + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -59686,11 +60241,9 @@ snapshots: is-obj@2.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} - is-plain-obj@3.0.0: {} + is-plain-obj@4.1.0: {} is-plain-object@2.0.4: dependencies: @@ -59704,6 +60257,8 @@ snapshots: is-potential-custom-element-name@1.0.1: {} + is-promise@4.0.0: {} + is-reference@3.0.3: dependencies: '@types/estree': 1.0.8 @@ -59750,8 +60305,6 @@ snapshots: is-typedarray@1.0.0: {} - is-unicode-supported@0.1.0: {} - is-unsafe@2.0.2: {} is-weakmap@2.0.2: {} @@ -59765,9 +60318,9 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 - is-wsl@2.2.0: + is-wsl@3.1.1: dependencies: - is-docker: 2.2.1 + is-inside-container: 1.0.0 isarray@1.0.0: {} @@ -59779,6 +60332,10 @@ snapshots: isexe@2.0.0: {} + isexe@3.1.5: {} + + isexe@4.0.0: {} + isobject@3.0.1: {} isobject@4.0.0: {} @@ -59789,16 +60346,6 @@ snapshots: istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.28.5 @@ -59815,11 +60362,11 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: + istanbul-lib-source-maps@5.0.6: dependencies: + '@jridgewell/trace-mapping': 0.3.31 debug: 4.4.3 istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -59842,79 +60389,80 @@ snapshots: filelist: 1.0.4 picocolors: 1.1.1 - jest-changed-files@29.7.0: + jest-changed-files@30.5.1: dependencies: execa: 5.1.1 - jest-util: 29.7.0 + jest-util: 30.5.1 p-limit: 3.1.0 - jest-circus@29.7.0: + jest-circus@30.5.2: dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/environment': 30.5.2 + '@jest/expect': 30.5.2 + '@jest/test-result': 30.5.2 + '@jest/types': 30.5.1 '@types/node': 24.13.6 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.0 is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 + jest-each: 30.5.2 + jest-matcher-utils: 30.5.2 + jest-message-util: 30.5.1 + jest-runtime: 30.5.2 + jest-snapshot: 30.5.2 + jest-util: 30.5.1 p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 + pretty-format: 30.5.1 + pure-rand: 7.0.1 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): + jest-cli@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/core': 30.5.2(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + '@jest/test-result': 30.5.2 + '@jest/types': 30.5.1 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - exit: 0.1.2 + exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 + jest-config: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + jest-util: 30.5.1 + jest-validate: 30.5.1 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - babel-plugin-macros + - esbuild-register - supports-color - ts-node - jest-config@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): + jest-config@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): dependencies: '@babel/core': 7.28.5 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.5) + '@jest/get-type': 30.5.0 + '@jest/pattern': 30.5.0 + '@jest/test-sequencer': 30.5.2 + '@jest/types': 30.5.1 + babel-jest: 30.5.2(@babel/core@7.28.5) chalk: 4.1.2 - ci-info: 3.9.0 + ci-info: 4.3.1 deepmerge: 4.3.1 - glob: 7.2.3 + glob: 13.0.6 graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 + jest-circus: 30.5.2 + jest-docblock: 30.5.0 + jest-environment-node: 30.5.2 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.1 + jest-runner: 30.5.2 + jest-util: 30.5.1 + jest-validate: 30.5.1 parse-json: 5.2.0 - pretty-format: 29.7.0 + pretty-format: 30.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: @@ -59924,272 +60472,238 @@ snapshots: - babel-plugin-macros - supports-color - jest-diff@29.7.0: + jest-diff@30.5.2: dependencies: + '@jest/diff-sequences': 30.5.0 + '@jest/get-type': 30.5.0 chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + pretty-format: 30.5.1 - jest-docblock@29.7.0: + jest-docblock@30.5.0: dependencies: detect-newline: 3.1.0 - jest-each@29.7.0: + jest-each@30.5.2: dependencies: - '@jest/types': 29.6.3 + '@jest/get-type': 30.5.0 + '@jest/types': 30.5.1 chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 + jest-regex-util: 30.5.0 + jest-util: 30.5.1 + pretty-format: 30.5.1 - jest-environment-jsdom@30.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + jest-environment-jsdom@30.5.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: - '@jest/environment': 30.2.0 - '@jest/environment-jsdom-abstract': 30.2.0(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@jest/environment': 30.5.2 + '@jest/environment-jsdom-abstract': 30.5.2(@types/jsdom@21.1.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@types/jsdom': 21.1.7 - '@types/node': 24.13.6 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - jest-environment-jsdom@30.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + jest-environment-jsdom@30.5.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@jest/environment': 30.2.0 - '@jest/environment-jsdom-abstract': 30.2.0(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@jest/environment': 30.5.2 + '@jest/environment-jsdom-abstract': 30.5.2(@types/jsdom@21.1.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@types/jsdom': 21.1.7 - '@types/node': 24.13.6 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - jest-environment-node@29.7.0: + jest-environment-node@30.5.2: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 + '@jest/environment': 30.5.2 + '@jest/fake-timers': 30.5.2 + '@jest/types': 30.5.1 '@types/node': 24.13.6 - jest-mock: 29.7.0 - jest-util: 29.7.0 + jest-mock: 30.5.2 + jest-util: 30.5.1 + jest-validate: 30.5.1 - jest-fetch-mock@3.0.3(encoding@0.1.13): + jest-fetch-mock@3.0.3: dependencies: - cross-fetch: 3.2.0(encoding@0.1.13) + cross-fetch: 3.2.0 promise-polyfill: 8.3.0 transitivePeerDependencies: - encoding - jest-get-type@29.6.3: {} - - jest-haste-map@29.7.0: + jest-haste-map@30.5.1: dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 + '@jest/types': 30.5.1 + '@parcel/watcher': 2.6.0 '@types/node': 24.13.6 anymatch: 3.1.3 fb-watchman: 2.0.2 + fdir: 6.5.0(picomatch@4.0.3) graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 + jest-regex-util: 30.5.0 + jest-util: 30.5.1 + jest-worker: 30.5.1 + picomatch: 4.0.3 - jest-leak-detector@29.7.0: + jest-leak-detector@30.5.1: dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + '@jest/get-type': 30.5.0 + pretty-format: 30.5.1 - jest-matcher-utils@29.7.0: + jest-matcher-utils@30.5.2: dependencies: + '@jest/get-type': 30.5.0 chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + jest-diff: 30.5.2 + pretty-format: 30.5.1 - jest-message-util@29.7.0: + jest-message-util@30.5.1: dependencies: '@babel/code-frame': 7.27.1 - '@jest/types': 29.6.3 + '@jest/types': 30.5.1 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-message-util@30.2.0: - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 30.2.0 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 30.2.0 + jest-util: 30.5.1 + picomatch: 4.0.3 + pretty-format: 30.5.1 slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@29.7.0: + jest-mock@30.5.2: dependencies: - '@jest/types': 29.6.3 + '@jest/expect-utils': 30.5.2 + '@jest/types': 30.5.1 '@types/node': 24.13.6 - jest-util: 29.7.0 + jest-util: 30.5.1 - jest-mock@30.2.0: - dependencies: - '@jest/types': 30.2.0 - '@types/node': 24.13.6 - jest-util: 30.2.0 + jest-regex-util@30.5.0: {} - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - - jest-regex-util@29.6.3: {} - - jest-regex-util@30.0.1: {} - - jest-resolve-dependencies@29.7.0: + jest-resolve-dependencies@30.5.2: dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 + jest-regex-util: 30.5.0 + jest-snapshot: 30.5.2 transitivePeerDependencies: - supports-color - jest-resolve@29.7.0: + jest-resolve@30.5.1: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.11 - resolve.exports: 2.0.3 + jest-haste-map: 30.5.1 + jest-util: 30.5.1 + jest-validate: 30.5.1 slash: 3.0.0 + unrs-resolver: 1.12.2 - jest-runner@29.7.0: + jest-runner@30.5.2: dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 30.5.2 + '@jest/environment': 30.5.2 + '@jest/source-map': 30.5.2 + '@jest/test-result': 30.5.2 + '@jest/transform': 30.5.2 + '@jest/types': 30.5.1 '@types/node': 24.13.6 chalk: 4.1.2 emittery: 0.13.1 + exit-x: 0.2.2 graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 + jest-docblock: 30.5.0 + jest-environment-node: 30.5.2 + jest-haste-map: 30.5.1 + jest-leak-detector: 30.5.1 + jest-message-util: 30.5.1 + jest-resolve: 30.5.1 + jest-runtime: 30.5.2 + jest-util: 30.5.1 + jest-watcher: 30.5.2 + jest-worker: 30.5.1 p-limit: 3.1.0 - source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - jest-runtime@29.7.0: + jest-runtime@30.5.2: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/environment': 30.5.2 + '@jest/fake-timers': 30.5.2 + '@jest/globals': 30.5.2 + '@jest/source-map': 30.5.2 + '@jest/test-result': 30.5.2 + '@jest/transform': 30.5.2 + '@jest/types': 30.5.1 '@types/node': 24.13.6 chalk: 4.1.2 - cjs-module-lexer: 1.4.3 + cjs-module-lexer: 2.2.1 collect-v8-coverage: 1.0.3 - glob: 7.2.3 + es-module-lexer: 2.3.2 + glob: 13.0.6 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 + jest-haste-map: 30.5.1 + jest-message-util: 30.5.1 + jest-mock: 30.5.2 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.1 + jest-snapshot: 30.5.2 + jest-util: 30.5.1 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - jest-snapshot@29.7.0: + jest-snapshot@30.5.2: dependencies: '@babel/core': 7.28.5 '@babel/generator': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) '@babel/types': 7.28.5 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/expect-utils': 30.5.2 + '@jest/get-type': 30.5.0 + '@jest/snapshot-utils': 30.5.1 + '@jest/transform': 30.5.2 + '@jest/types': 30.5.1 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) chalk: 4.1.2 - expect: 29.7.0 + expect: 30.5.2 graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 + jest-diff: 30.5.2 + jest-matcher-utils: 30.5.2 + jest-message-util: 30.5.1 + jest-util: 30.5.1 + pretty-format: 30.5.1 semver: 7.7.3 + synckit: 0.11.13 transitivePeerDependencies: - supports-color - jest-util@29.7.0: + jest-util@30.5.1: dependencies: - '@jest/types': 29.6.3 - '@types/node': 24.13.6 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-util@30.2.0: - dependencies: - '@jest/types': 30.2.0 + '@jest/types': 30.5.1 '@types/node': 24.13.6 chalk: 4.1.2 ci-info: 4.3.1 graceful-fs: 4.2.11 picomatch: 4.0.3 - jest-validate@29.7.0: + jest-validate@30.5.1: dependencies: - '@jest/types': 29.6.3 + '@jest/get-type': 30.5.0 + '@jest/types': 30.5.1 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 29.7.0 + pretty-format: 30.5.1 - jest-watcher@29.7.0: + jest-watcher@30.5.2: dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/test-result': 30.5.2 + '@jest/types': 30.5.1 '@types/node': 24.13.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.7.0 + jest-util: 30.5.1 string-length: 4.0.2 jest-worker@27.5.1: @@ -60198,22 +60712,24 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest-worker@29.7.0: + jest-worker@30.5.1: dependencies: '@types/node': 24.13.6 - jest-util: 29.7.0 + '@ungap/structured-clone': 1.3.0 + jest-util: 30.5.1 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): + jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - '@jest/types': 29.6.3 + '@jest/core': 30.5.2(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + '@jest/types': 30.5.1 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + jest-cli: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros + - esbuild-register - supports-color - ts-node @@ -60229,6 +60745,8 @@ snapshots: jiti@1.21.7: {} + jiti@2.7.0: {} + jose@4.15.9: {} jose@5.10.0: {} @@ -60250,7 +60768,11 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.3.2: + dependencies: + argparse: 2.0.1 + + js-yaml@5.4.3: dependencies: argparse: 2.0.1 @@ -60411,6 +60933,10 @@ snapshots: dependencies: commander: 8.3.0 + katex@0.16.47: + dependencies: + commander: 8.3.0 + keygrip@1.1.0: dependencies: tsscmp: 1.0.6 @@ -60423,11 +60949,9 @@ snapshots: kind-of@6.0.3: {} - kleur@3.0.3: {} - kleur@4.1.5: {} - known-css-properties@0.35.0: {} + known-css-properties@0.37.0: {} koa-bodyparser@4.4.1: dependencies: @@ -60497,18 +61021,14 @@ snapshots: kuler@2.0.0: {} - langium@3.3.1: + launch-editor@2.14.2: dependencies: - chevrotain: 11.0.3 - chevrotain-allstar: 0.3.1(chevrotain@11.0.3) - vscode-languageserver: 9.0.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 + picocolors: 1.1.1 + shell-quote: 1.12.0 - launch-editor@2.12.0: + launder@1.7.2: dependencies: - picocolors: 1.1.1 - shell-quote: 1.8.3 + dayjs: 1.11.23 layout-base@1.0.2: {} @@ -60592,8 +61112,6 @@ snapshots: transitivePeerDependencies: - debug - loader-runner@4.3.1: {} - loader-utils@1.4.2: dependencies: big.js: 5.2.2 @@ -60705,11 +61223,6 @@ snapshots: lodash@4.17.21: {} - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - logform@2.7.0: dependencies: '@colors/colors': 1.6.0 @@ -60753,8 +61266,6 @@ snapshots: dependencies: yallist: 4.0.0 - lru-cache@7.18.3: {} - machina@7.0.1: {} magic-string@0.25.9: @@ -60771,31 +61282,6 @@ snapshots: make-error@1.3.6: {} - make-fetch-happen@10.2.1: - dependencies: - agentkeepalive: 4.6.0 - cacache: 16.1.3 - http-cache-semantics: 4.2.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.4 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - supports-color - - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - mammoth@1.11.0: dependencies: '@xmldom/xmldom': 0.8.11 @@ -60852,6 +61338,8 @@ snapshots: media-typer@0.3.0: {} + media-typer@1.1.1: {} + mem@4.3.0: dependencies: map-age-cleaner: 0.1.3 @@ -60862,36 +61350,57 @@ snapshots: dependencies: fs-monkey: 1.1.0 + memfs@4.80.0: + dependencies: + '@jsonjoy.com/fs-core': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.80.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.3.1(tslib@2.8.1) + thingies: 2.6.1(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + memory-pager@1.5.0: {} merge-descriptors@1.0.3: {} + merge-descriptors@2.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} - mermaid@11.12.1: + mermaid@11.17.2: dependencies: - '@braintree/sanitize-url': 7.1.1 + '@braintree/sanitize-url': 7.1.2 '@iconify/utils': 3.0.2 - '@mermaid-js/parser': 0.6.3 + '@mermaid-js/parser': 1.2.1 '@types/d3': 7.4.3 - cytoscape: 3.33.1 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) - cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.34.3 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.3) + cytoscape-fcose: 2.2.0(cytoscape@3.34.3) d3: 7.9.0 d3-sankey: 0.12.3 - dagre-d3-es: 7.0.13 - dayjs: 1.11.19 - dompurify: 3.3.0 - katex: 0.16.25 + dagre-d3-es: 7.0.14 + dayjs: 1.11.23 + dompurify: 3.4.16 + es-toolkit: 1.52.0 + fastdom: 1.0.12 + katex: 0.16.47 khroma: 2.1.0 - lodash-es: 4.17.21 marked: 16.4.2 roughjs: 4.6.6 stylis: 4.3.6 ts-dedent: 2.2.0 - uuid: 11.1.0 + uuid: 11.1.1 transitivePeerDependencies: - supports-color @@ -60910,6 +61419,10 @@ snapshots: dependencies: mime-db: 1.52.0 + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mime@2.6.0: {} @@ -60930,27 +61443,27 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.4(webpack@5.102.1): + mini-css-extract-plugin@2.9.4(webpack@5.111.1): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} - minimatch@10.1.1: + minimatch@10.2.6: dependencies: - '@isaacs/brace-expansion': 5.0.0 + brace-expansion: 5.0.12 minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 - minimatch@5.1.6: + minimatch@3.1.5: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 1.1.12 - minimatch@9.0.3: + minimatch@5.1.6: dependencies: brace-expansion: 2.0.2 @@ -60960,6 +61473,38 @@ snapshots: minimist@1.2.8: {} + minimizer-webpack-plugin@5.13.0(esbuild@0.25.12)(postcss@8.5.28)(webpack@5.111.1): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.5.0 + terser: 5.51.2 + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) + optionalDependencies: + esbuild: 0.25.12 + postcss: 8.5.28 + + minimizer-webpack-plugin@5.13.0(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6))(webpack@5.111.1(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6))): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.5.0 + terser: 5.51.2 + webpack: 5.111.1(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6)) + optionalDependencies: + esbuild: 0.25.12 + sharp: 0.35.5(@types/node@24.13.6) + + minimizer-webpack-plugin@5.13.0(postcss@8.5.28)(webpack@5.111.1(postcss@8.5.28)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.5.0 + terser: 5.51.2 + webpack: 5.111.1(postcss@8.5.28) + optionalDependencies: + postcss: 8.5.28 + minio@8.0.7: dependencies: async: 3.2.6 @@ -60976,42 +61521,9 @@ snapshots: through2: 4.0.2 xml2js: 0.6.2 - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 - - minipass-fetch@2.1.2: - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 + minipass@7.1.3: {} minizlib@3.1.0: dependencies: @@ -61047,22 +61559,22 @@ snapshots: '@types/whatwg-url': 11.0.5 whatwg-url: 14.2.0 - mongodb@6.20.0(gcp-metadata@5.3.0(encoding@0.1.13))(snappy@7.3.3)(socks@2.8.7): + mongodb@6.20.0(gcp-metadata@5.3.0)(snappy@7.3.3)(socks@2.8.7): dependencies: '@mongodb-js/saslprep': 1.3.2 bson: 6.10.4 mongodb-connection-string-url: 3.0.2 optionalDependencies: - gcp-metadata: 5.3.0(encoding@0.1.13) + gcp-metadata: 5.3.0 snappy: 7.3.3 socks: 2.8.7 - morgan@1.10.1: + morgan@1.12.1: dependencies: basic-auth: 2.0.1 debug: 2.6.9 depd: 2.0.0 - on-finished: 2.3.0 + on-finished: 2.4.1 on-headers: 1.1.0 mri@1.2.0: {} @@ -61105,7 +61617,9 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.11: {} + nanoid@3.3.20: {} + + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -61113,6 +61627,10 @@ snapshots: negotiator@0.6.4: {} + negotiator@1.1.0: + dependencies: + content-type: 2.1.0 + neo-async@2.6.2: {} next-tick@1.1.0: {} @@ -61124,17 +61642,13 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.80.0: + node-abi@4.36.0: dependencies: semver: 7.7.3 node-abort-controller@3.1.1: {} - node-addon-api@1.7.2: - optional: true - - node-addon-api@7.1.1: - optional: true + node-addon-api@7.1.1: {} node-api-version@0.2.1: dependencies: @@ -61142,11 +61656,9 @@ snapshots: node-domexception@1.0.0: {} - node-fetch@2.7.0(encoding@0.1.13): + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 node-fetch@3.3.2: dependencies: @@ -61154,7 +61666,7 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.3.1: {} + node-forge@1.4.0: {} node-gyp-build-optional-packages@5.2.2: dependencies: @@ -61162,33 +61674,30 @@ snapshots: node-gyp-build@4.8.4: {} - node-gyp@9.4.1: + node-gyp@12.4.0: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.3 - glob: 7.2.3 graceful-fs: 4.2.11 - make-fetch-happen: 10.2.1 - nopt: 6.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 + nopt: 9.0.0 + proc-log: 6.1.0 semver: 7.7.3 - tar: 6.2.1 - which: 2.0.2 - transitivePeerDependencies: - - supports-color + tar: 7.5.22 + tinyglobby: 0.2.17 + undici: 6.29.0 + which: 6.0.1 node-int64@0.4.0: {} - node-loader@2.0.0(webpack@5.102.1(esbuild@0.25.12)): + node-loader@2.0.0(webpack@5.111.1(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6))): dependencies: loader-utils: 2.0.4 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.111.1(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6)) - node-loader@2.0.0(webpack@5.102.1): + node-loader@2.0.0(webpack@5.111.1): dependencies: loader-utils: 2.0.4 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) node-localstorage@2.2.1: dependencies: @@ -61201,20 +61710,20 @@ snapshots: node-releases@2.0.47: {} - nodemailer@6.10.1: {} + nodemailer@9.1.1: {} nopt@1.0.10: dependencies: abbrev: 1.1.1 - nopt@6.0.0: - dependencies: - abbrev: 1.1.1 - nopt@8.1.0: dependencies: abbrev: 3.0.1 + nopt@9.0.0: + dependencies: + abbrev: 4.0.0 + normalize-path@3.0.0: {} normalize-range@0.1.2: {} @@ -61229,13 +61738,6 @@ snapshots: dependencies: path-key: 3.1.1 - npmlog@6.0.2: - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - nth-check@1.0.2: dependencies: boolbase: 1.0.0 @@ -61293,8 +61795,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - obuf@1.1.2: {} - octokit@3.2.2: dependencies: '@octokit/app': 14.1.0 @@ -61309,16 +61809,12 @@ snapshots: '@octokit/types': 13.10.0 '@octokit/webhooks': 12.3.2 - oembed-providers@1.0.20260106: {} + oembed-providers@1.0.20260604: {} oidc-token-hash@5.2.0: {} omggif@1.0.10: {} - on-finished@2.3.0: - dependencies: - ee-first: 1.1.1 - on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -61339,13 +61835,16 @@ snapshots: only@0.0.2: {} - open@8.4.2: + open@11.0.4: dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 + default-browser: 5.5.1 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.2.1 + wsl-utils: 1.0.1 - openai@4.104.0(encoding@0.1.13)(ws@8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76): + openai@4.104.0(ws@8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76): dependencies: '@types/node': 18.19.130 '@types/node-fetch': 2.6.13 @@ -61353,7 +61852,7 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 optionalDependencies: ws: 8.21.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) zod: 3.25.76 @@ -61380,18 +61879,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - orderedmap@2.1.1: {} os-locale@3.1.0: @@ -61442,19 +61929,14 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - p-queue@7.3.4: dependencies: eventemitter3: 4.0.7 p-timeout: 5.1.0 - p-retry@4.6.2: + p-retry@8.0.1: dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 + is-network-error: 1.3.2 p-timeout@4.1.0: {} @@ -61577,10 +62059,17 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.2: + dependencies: + lru-cache: 11.2.2 + minipass: 7.1.3 + path-to-regexp@0.1.12: {} path-to-regexp@6.3.0: {} + path-to-regexp@8.4.2: {} + path-type@4.0.0: {} pathe@2.0.3: {} @@ -61594,7 +62083,9 @@ snapshots: pako: 1.0.11 tslib: 1.14.1 - pdfjs-dist@2.12.313: {} + pdfjs-dist@6.2.108: + optionalDependencies: + '@napi-rs/canvas': 1.0.10 pe-library@0.4.1: {} @@ -61602,8 +62093,6 @@ snapshots: peek-readable@4.1.0: {} - pend@1.2.0: {} - performance-now@2.1.0: optional: true @@ -61639,6 +62128,8 @@ snapshots: picomatch@4.0.3: {} + picomatch@4.0.7: {} + pify@2.3.0: {} pirates@4.0.7: {} @@ -61667,13 +62158,20 @@ snapshots: dependencies: find-up: 3.0.0 - playwright-core@1.56.1: {} + pkijs@3.4.1: + dependencies: + '@noble/hashes': 1.8.0 + asn1js: 3.0.10 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.2.0 + tslib: 2.8.1 - playwright@1.56.1: + playwright-core@1.63.0: {} + + playwright@1.63.0: dependencies: - playwright-core: 1.56.1 - optionalDependencies: - fsevents: 2.3.2 + playwright-core: 1.63.0 plist@3.1.0: dependencies: @@ -61706,77 +62204,77 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-import@15.1.0(postcss@8.5.6): + postcss-import@15.1.0(postcss@8.5.28): dependencies: - postcss: 8.5.6 + postcss: 8.5.28 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.11 - postcss-js@4.1.0(postcss@8.5.6): + postcss-js@4.1.0(postcss@8.5.28): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.6 + postcss: 8.5.28 - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): + postcss-load-config@3.1.4(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - postcss: 8.5.6 + postcss: 8.5.28 ts-node: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): + postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): dependencies: lilconfig: 3.1.3 yaml: 2.8.1 optionalDependencies: - postcss: 8.5.6 + postcss: 8.5.28 ts-node: 10.9.2(@types/node@24.13.6)(typescript@5.9.3) - postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1): + postcss-loader@7.3.4(postcss@8.5.28)(typescript@5.9.3)(webpack@5.111.1): dependencies: cosmiconfig: 8.3.6(typescript@5.9.3) jiti: 1.21.7 - postcss: 8.5.6 + postcss: 8.5.28 semver: 7.7.3 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) transitivePeerDependencies: - typescript - postcss-modules-extract-imports@3.1.0(postcss@8.5.6): + postcss-modules-extract-imports@3.1.0(postcss@8.5.28): dependencies: - postcss: 8.5.6 + postcss: 8.5.28 - postcss-modules-local-by-default@4.2.0(postcss@8.5.6): + postcss-modules-local-by-default@4.2.0(postcss@8.5.28): dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 + icss-utils: 5.1.0(postcss@8.5.28) + postcss: 8.5.28 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.6): + postcss-modules-scope@3.2.1(postcss@8.5.28): dependencies: - postcss: 8.5.6 + postcss: 8.5.28 postcss-selector-parser: 7.1.0 - postcss-modules-values@4.0.0(postcss@8.5.6): + postcss-modules-values@4.0.0(postcss@8.5.28): dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 + icss-utils: 5.1.0(postcss@8.5.28) + postcss: 8.5.28 - postcss-nested@6.2.0(postcss@8.5.6): + postcss-nested@6.2.0(postcss@8.5.28): dependencies: - postcss: 8.5.6 + postcss: 8.5.28 postcss-selector-parser: 6.1.2 - postcss-safe-parser@6.0.0(postcss@8.5.6): + postcss-safe-parser@7.1.0(postcss@8.5.28): dependencies: - postcss: 8.5.6 + postcss: 8.5.28 - postcss-scss@4.0.9(postcss@8.5.6): + postcss-scss@4.0.9(postcss@8.5.28): dependencies: - postcss: 8.5.6 + postcss: 8.5.28 postcss-selector-parser@6.1.2: dependencies: @@ -61790,9 +62288,9 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.6: + postcss@8.5.28: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.20 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -61806,7 +62304,9 @@ snapshots: dependencies: xtend: 4.0.2 - postgres@3.4.7: {} + postgres@3.4.9: {} + + powershell-utils@0.2.1: {} prelude-ls@1.2.1: {} @@ -61822,28 +62322,29 @@ snapshots: lodash: 4.17.21 renderkid: 3.0.0 - pretty-format@29.7.0: + pretty-format@30.2.0: dependencies: - '@jest/schemas': 29.6.3 + '@jest/schemas': 30.0.5 ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-format@30.2.0: + pretty-format@30.5.1: dependencies: - '@jest/schemas': 30.0.5 + '@jest/react-is-18': react-is@18.3.1 + '@jest/react-is-19': react-is@19.3.0 + '@jest/schemas': 30.5.0 ansi-styles: 5.2.0 - react-is: 18.3.1 printj@1.1.2: {} + proc-log@6.1.0: {} + process-nextick-args@2.0.1: {} process@0.11.10: {} progress@2.0.3: {} - promise-inflight@1.0.1: {} - promise-polyfill@8.3.0: {} promise-retry@2.0.1: @@ -61851,11 +62352,6 @@ snapshots: err-code: 2.0.3 retry: 0.12.0 - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - proper-lockfile@4.1.2: dependencies: graceful-fs: 4.2.11 @@ -62005,9 +62501,9 @@ snapshots: dependencies: escape-goat: 4.0.0 - puppeteer-core@25.11.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)(yauzl@2.10.0): + puppeteer-core@25.11.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@puppeteer/browsers': 3.2.2(yauzl@2.10.0) + '@puppeteer/browsers': 3.2.2 chromium-bidi: 17.0.2(devtools-protocol@0.0.1680125) devtools-protocol: 0.0.1680125 typed-query-selector: 2.12.2 @@ -62019,13 +62515,13 @@ snapshots: - utf-8-validate - yauzl - puppeteer@25.11.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)(yauzl@2.10.0): + puppeteer@25.11.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@puppeteer/browsers': 3.2.2(yauzl@2.10.0) + '@puppeteer/browsers': 3.2.2 chromium-bidi: 17.0.2(devtools-protocol@0.0.1680125) devtools-protocol: 0.0.1680125 lilconfig: 3.1.3 - puppeteer-core: 25.11.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)(yauzl@2.10.0) + puppeteer-core: 25.11.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) typed-query-selector: 2.12.2 transitivePeerDependencies: - bufferutil @@ -62033,7 +62529,13 @@ snapshots: - utf-8-validate - yauzl - pure-rand@6.1.0: {} + pure-rand@7.0.1: {} + + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.2.0: {} qrcode@1.5.4: dependencies: @@ -62041,15 +62543,14 @@ snapshots: pngjs: 5.0.0 yargs: 15.4.1 - qs@6.11.2: - dependencies: - side-channel: 1.1.0 - qs@6.13.0: dependencies: side-channel: 1.1.0 - qs@6.5.3: {} + qs@6.16.0: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 quansync@0.2.11: {} @@ -62064,10 +62565,6 @@ snapshots: queue-microtask@1.2.3: {} - queue@6.0.2: - dependencies: - inherits: 2.0.4 - quick-lru@5.1.1: {} quick-lru@6.1.2: {} @@ -62079,12 +62576,10 @@ snapshots: random-bytes@1.0.0: {} - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - range-parser@1.2.1: {} + range-parser@1.3.0: {} + rangetouch@2.0.1: {} raw-body@2.5.2: @@ -62094,8 +62589,17 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + raw-body@3.0.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.7.3 + unpipe: 1.0.0 + react-is@18.3.1: {} + react-is@19.3.0: {} + read-binary-file-arch@1.0.6: dependencies: debug: 4.4.3 @@ -62144,6 +62648,8 @@ snapshots: readdirp@4.1.2: {} + readdirp@5.1.1: {} + real-cancellable-promise@1.2.3: {} rechoir@0.8.0: @@ -62155,6 +62661,12 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.2 + + reflect-metadata@0.2.2: {} + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -62168,6 +62680,11 @@ snapshots: regenerator-runtime@0.13.11: {} + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.2 + refa: 0.12.1 + regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -62177,8 +62694,6 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - regexpp@3.2.0: {} - relateurl@0.2.7: {} remedial@1.0.8: {} @@ -62230,8 +62745,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve.exports@2.0.3: {} - resolve@1.22.11: dependencies: is-core-module: 2.16.1 @@ -62242,15 +62755,8 @@ snapshots: dependencies: lowercase-keys: 2.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - retry@0.12.0: {} - retry@0.13.1: {} - reusify@1.1.0: {} rfc6902@5.1.2: {} @@ -62262,10 +62768,6 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rimraf@5.0.10: dependencies: glob: 10.4.5 @@ -62295,8 +62797,20 @@ snapshots: points-on-curve: 0.2.0 points-on-path: 0.2.1 + router@2.2.0: + dependencies: + debug: 4.4.3 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.4.2 + transitivePeerDependencies: + - supports-color + rrweb-cssom@0.8.0: {} + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -62356,21 +62870,22 @@ snapshots: dependencies: truncate-utf8-bytes: 1.0.2 - sanitize-html@2.17.0: + sanitize-html@2.17.5: dependencies: deepmerge: 4.3.1 escape-string-regexp: 4.0.0 - htmlparser2: 8.0.2 + htmlparser2: 10.1.0 is-plain-object: 5.0.0 + launder: 1.7.2 parse-srcset: 1.0.2 - postcss: 8.5.6 + postcss: 8.5.28 - sass-loader@14.2.1(sass@1.93.3)(webpack@5.102.1): + sass-loader@14.2.1(sass@1.93.3)(webpack@5.111.1): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.93.3 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) sass@1.93.3: dependencies: @@ -62399,6 +62914,19 @@ snapshots: ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.17.1) + schema-utils@4.5.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.20.0 + ajv-formats: 3.0.1 + ajv-keywords: 5.1.0(ajv@8.20.0) + + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.2 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scule@1.3.0: {} sdp-transform@2.15.0: {} @@ -62411,12 +62939,10 @@ snapshots: dependencies: parseley: 0.12.1 - select-hose@2.0.0: {} - - selfsigned@2.4.1: + selfsigned@5.5.0: dependencies: - '@types/node-forge': 1.3.14 - node-forge: 1.3.1 + '@peculiar/x509': 1.14.3 + pkijs: 3.4.1 semver-compare@1.0.0: optional: true @@ -62427,6 +62953,8 @@ snapshots: semver@7.7.3: {} + semver@7.8.5: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -62443,22 +62971,36 @@ snapshots: range-parser: 1.2.1 statuses: 2.0.1 + send@1.2.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.1 + mime-types: 3.0.2 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + serialize-error@7.0.1: dependencies: type-fest: 0.13.1 optional: true - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 + serialize-javascript@7.1.2: {} - serve-index@1.9.1: + serve-index@1.9.2: dependencies: accepts: 1.3.8 batch: 0.6.1 debug: 2.6.9 escape-html: 1.0.3 - http-errors: 1.6.3 + http-errors: 1.8.1 mime-types: 2.1.35 parseurl: 1.3.3 @@ -62469,6 +63011,15 @@ snapshots: parseurl: 1.3.3 send: 0.19.0 + serve-static@2.2.1: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.1 + transitivePeerDependencies: + - supports-color + set-blocking@2.0.0: {} set-function-length@1.2.2: @@ -62495,46 +63046,44 @@ snapshots: setimmediate@1.0.5: {} - setprototypeof@1.1.0: {} - - setprototypeof@1.1.1: {} - setprototypeof@1.2.0: {} shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 - sharp@0.34.5: + sharp@0.35.5(@types/node@24.13.6): dependencies: - '@img/colour': 1.0.0 + '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.7.3 + semver: 7.8.5 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 + '@img/sharp-darwin-arm64': 0.35.5 + '@img/sharp-darwin-x64': 0.35.5 + '@img/sharp-freebsd-wasm32': 0.35.5 + '@img/sharp-libvips-darwin-arm64': 1.3.4 + '@img/sharp-libvips-darwin-x64': 1.3.4 + '@img/sharp-libvips-linux-arm': 1.3.4 + '@img/sharp-libvips-linux-arm64': 1.3.4 + '@img/sharp-libvips-linux-ppc64': 1.3.4 + '@img/sharp-libvips-linux-riscv64': 1.3.4 + '@img/sharp-libvips-linux-s390x': 1.3.4 + '@img/sharp-libvips-linux-x64': 1.3.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 + '@img/sharp-linux-arm': 0.35.5 + '@img/sharp-linux-arm64': 0.35.5 + '@img/sharp-linux-ppc64': 0.35.5 + '@img/sharp-linux-riscv64': 0.35.5 + '@img/sharp-linux-s390x': 0.35.5 + '@img/sharp-linux-x64': 0.35.5 + '@img/sharp-linuxmusl-arm64': 0.35.5 + '@img/sharp-linuxmusl-x64': 0.35.5 + '@img/sharp-webcontainers-wasm32': 0.35.5 + '@img/sharp-win32-arm64': 0.35.5 + '@img/sharp-win32-ia32': 0.35.5 + '@img/sharp-win32-x64': 0.35.5 + '@types/node': 24.13.6 shebang-command@1.2.0: dependencies: @@ -62548,13 +63097,18 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.3: {} + shell-quote@1.12.0: {} side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-map@1.0.1: dependencies: call-bound: 1.0.4 @@ -62578,6 +63132,14 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -62596,19 +63158,8 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 - sisteransi@1.0.5: {} - slash@3.0.0: {} - slash@4.0.0: {} - - slice-ansi@3.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - optional: true - slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.3 @@ -62626,7 +63177,7 @@ snapshots: dependencies: commander: 9.5.0 eventsource: 2.0.2 - morgan: 1.10.1 + morgan: 1.12.1 superagent: 8.1.2 validator: 13.15.22 transitivePeerDependencies: @@ -62655,20 +63206,6 @@ snapshots: snappyjs@0.7.0: {} - sockjs@0.3.24: - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - - socks-proxy-agent@7.0.0: - dependencies: - agent-base: 6.0.2 - debug: 4.4.3 - socks: 2.8.7 - transitivePeerDependencies: - - supports-color - socks@2.8.7: dependencies: ip-address: 10.1.0 @@ -62693,11 +63230,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.21: dependencies: buffer-from: 1.1.2 @@ -62713,27 +63245,6 @@ snapshots: dependencies: memory-pager: 1.5.0 - spdy-transport@3.0.0: - dependencies: - debug: 4.4.3 - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - - spdy@4.0.2: - dependencies: - debug: 4.4.3 - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - split-on-first@1.1.0: {} sprintf-js@1.0.3: {} @@ -62741,10 +63252,6 @@ snapshots: sprintf-js@1.1.3: optional: true - ssri@9.0.1: - dependencies: - minipass: 3.3.6 - stable@0.1.8: {} stack-trace@0.0.10: {} @@ -62767,6 +63274,8 @@ snapshots: statuses@2.0.1: {} + statuses@2.0.2: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -62798,6 +63307,8 @@ snapshots: strict-uri-encode@2.0.0: {} + strictdom@1.0.1: {} + string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -62903,7 +63414,7 @@ snapshots: stripe@17.7.0: dependencies: '@types/node': 24.13.6 - qs: 6.11.2 + qs: 6.16.0 striptags@3.2.0: {} @@ -62916,9 +63427,9 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 4.1.0 - style-loader@3.3.4(webpack@5.102.1): + style-loader@3.3.4(webpack@5.111.1): dependencies: - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) stylis@4.3.6: {} @@ -62944,11 +63455,11 @@ snapshots: cookiejar: 2.1.4 debug: 4.4.3 fast-safe-stringify: 2.1.1 - form-data: 4.0.4 + form-data: 4.0.6 formidable: 2.1.5 methods: 1.1.2 mime: 2.6.0 - qs: 6.11.2 + qs: 6.16.0 semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -62963,14 +63474,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20): + svelte-check@3.8.6(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20): dependencies: '@jridgewell/trace-mapping': 0.3.31 chokidar: 3.6.0 picocolors: 1.1.1 sade: 1.8.1 svelte: 4.2.20 - svelte-preprocess: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) + svelte-preprocess: 5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - '@babel/core' @@ -62985,23 +63496,15 @@ snapshots: svelte-dev-helper@1.1.9: {} - svelte-eslint-parser@0.33.1(svelte@4.2.20): - dependencies: - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - postcss: 8.5.6 - postcss-scss: 4.0.9(postcss@8.5.6) - optionalDependencies: - svelte: 4.2.20 - - svelte-eslint-parser@0.43.0(svelte@4.2.20): + svelte-eslint-parser@1.8.1(svelte@4.2.20): dependencies: - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - postcss: 8.5.6 - postcss-scss: 4.0.9(postcss@8.5.6) + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + postcss: 8.5.28 + postcss-scss: 4.0.9(postcss@8.5.28) + postcss-selector-parser: 7.1.0 + semver: 7.7.3 optionalDependencies: svelte: 4.2.20 @@ -63016,7 +63519,7 @@ snapshots: svelte-dev-helper: 1.1.9 svelte-hmr: 0.14.12(svelte@4.2.20) - svelte-preprocess@5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.6)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3): + svelte-preprocess@5.1.4(@babel/core@7.28.5)(postcss-load-config@4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(postcss@8.5.28)(sass@1.93.3)(svelte@4.2.20)(typescript@5.9.3): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 @@ -63026,8 +63529,8 @@ snapshots: svelte: 4.2.20 optionalDependencies: '@babel/core': 7.28.5 - postcss: 8.5.6 - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + postcss: 8.5.28 + postcss-load-config: 4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) sass: 1.93.3 typescript: 5.9.3 @@ -63075,6 +63578,10 @@ snapshots: symbol-tree@3.2.4: {} + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + systeminformation@5.33.13: {} tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)): @@ -63093,11 +63600,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.6 - postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - postcss-nested: 6.2.0(postcss@8.5.6) + postcss: 8.5.28 + postcss-import: 15.1.0(postcss@8.5.28) + postcss-js: 4.1.0(postcss@8.5.28) + postcss-load-config: 4.0.2(postcss@8.5.28)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + postcss-nested: 6.2.0(postcss@8.5.28) postcss-selector-parser: 6.1.2 resolve: 1.22.11 sucrase: 3.35.0 @@ -63106,6 +63613,8 @@ snapshots: tapable@2.3.0: {} + tapable@2.3.3: {} + tar-stream@3.1.7: dependencies: b4a: 1.7.3 @@ -63115,16 +63624,7 @@ snapshots: - bare-abort-controller - react-native-b4a - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tar@7.5.2: + tar@7.5.22: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -63132,13 +63632,13 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - telegraf@4.16.3(encoding@0.1.13): + telegraf@4.16.3: dependencies: '@telegraf/types': 7.1.0 abort-controller: 3.0.0 debug: 4.4.3 mri: 1.2.0 - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 p-timeout: 4.1.0 safe-compare: 1.1.4 sandwich-stream: 2.0.2 @@ -63171,49 +63671,25 @@ snapshots: async-exit-hook: 2.0.1 fs-extra: 10.1.0 - terser-webpack-plugin@5.3.14(esbuild@0.25.12)(webpack@5.102.1(esbuild@0.25.12)): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.44.1 - webpack: 5.102.1(esbuild@0.25.12) - optionalDependencies: - esbuild: 0.25.12 - - terser-webpack-plugin@5.3.14(esbuild@0.25.12)(webpack@5.102.1): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.44.1 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) - optionalDependencies: - esbuild: 0.25.12 - - terser-webpack-plugin@5.3.14(webpack@5.102.1): + terser@5.44.1: dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.44.1 - webpack: 5.102.1 + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 - terser@5.44.1: + terser@5.51.2: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@6.0.0: + test-exclude@7.0.2: dependencies: '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 + glob: 10.4.5 + minimatch: 10.2.6 text-decoder@1.2.3: dependencies: @@ -63228,8 +63704,6 @@ snapshots: utrie: 1.0.2 optional: true - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -63238,6 +63712,10 @@ snapshots: dependencies: any-promise: 1.3.0 + thingies@2.6.1(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + thirty-two@1.0.2: {} through2@4.0.2: @@ -63248,6 +63726,10 @@ snapshots: timm@1.7.1: {} + tiny-async-pool@1.3.0: + dependencies: + semver: 5.7.2 + tiny-lru@11.3.4: {} tiny-typed-emitter@2.1.0: {} @@ -63256,6 +63738,11 @@ snapshots: tinyexec@1.0.2: {} + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + tippy.js@6.3.7: dependencies: '@popperjs/core': 2.11.8 @@ -63272,14 +63759,10 @@ snapshots: tmp@0.2.5: {} - tmpl@1.0.5: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - toidentifier@1.0.0: {} - toidentifier@1.0.1: {} token-types@4.2.1: @@ -63301,6 +63784,10 @@ snapshots: dependencies: punycode: 2.3.1 + tree-dump@1.1.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + tree-kill@1.2.2: {} triple-beam@1.4.1: {} @@ -63309,7 +63796,7 @@ snapshots: dependencies: utf8-byte-length: 1.0.5 - ts-api-utils@1.4.3(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -63323,69 +63810,49 @@ snapshots: dependencies: tslib: 1.14.1 - ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.8 - jest: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + handlebars: 4.7.10 + jest: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.3 + semver: 7.8.5 type-fest: 4.41.0 typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.28.5 - '@jest/transform': 29.7.0 - '@jest/types': 30.2.0 - babel-jest: 29.7.0(@babel/core@7.28.5) + '@jest/transform': 30.5.2 + '@jest/types': 30.5.1 + babel-jest: 30.5.2(@babel/core@7.28.5) esbuild: 0.25.12 - jest-util: 30.2.0 + jest-util: 30.5.1 - ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.6))(typescript@5.9.3): + ts-jest@29.4.14(@babel/core@7.28.5)(@jest/transform@30.5.2)(@jest/types@30.5.1)(babel-jest@30.5.2(@babel/core@7.28.5))(esbuild@0.25.12)(jest-util@30.5.1)(jest@30.5.2(@types/node@24.13.6))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.8 - jest: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) + handlebars: 4.7.10 + jest: 30.5.2(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.3 + semver: 7.8.5 type-fest: 4.41.0 typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.28.5 - '@jest/transform': 29.7.0 - '@jest/types': 30.2.0 - babel-jest: 29.7.0(@babel/core@7.28.5) + '@jest/transform': 30.5.2 + '@jest/types': 30.5.1 + babel-jest: 30.5.2(@babel/core@7.28.5) esbuild: 0.25.12 - jest-util: 30.2.0 - - ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@29.7.0)(typescript@5.9.3): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.8 - jest: 29.7.0(@types/node@24.13.6)(ts-node@10.9.2(@types/node@24.13.6)(typescript@5.9.3)) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.3 - type-fest: 4.41.0 - typescript: 5.9.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.28.5 - '@jest/transform': 29.7.0 - '@jest/types': 30.2.0 - babel-jest: 29.7.0(@babel/core@7.28.5) - jest-util: 30.2.0 + jest-util: 30.5.1 - ts-loader@9.5.4(typescript@5.9.3)(webpack@5.102.1): + ts-loader@9.5.4(typescript@5.9.3)(webpack@5.111.1): dependencies: chalk: 4.1.2 enhanced-resolve: 5.18.3 @@ -63393,7 +63860,7 @@ snapshots: semver: 7.7.3 source-map: 0.7.6 typescript: 5.9.3 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) ts-node-dev@2.0.0(@types/node@24.13.6)(typescript@5.9.3): dependencies: @@ -63462,6 +63929,10 @@ snapshots: tsscmp@1.0.6: {} + tsyringe@4.10.0: + dependencies: + tslib: 1.14.1 + turndown@7.2.2: dependencies: '@mixmark-io/domino': 2.2.0 @@ -63485,8 +63956,6 @@ snapshots: type-fest@0.13.1: optional: true - type-fest@0.20.2: {} - type-fest@0.21.3: {} type-fest@2.19.0: {} @@ -63498,6 +63967,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + type-is@2.1.0: + dependencies: + content-type: 2.1.0 + media-typer: 1.1.1 + mime-types: 3.0.2 + type@2.7.3: {} typed-array-buffer@1.0.3: @@ -63543,6 +64018,17 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typescript-eslint@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.71.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.9.3: {} ua-is-frozen@0.1.2: {} @@ -63577,19 +64063,11 @@ snapshots: undici-types@5.26.5: {} - undici-types@6.21.0: {} - undici-types@7.18.2: {} - undici@7.18.2: {} - - unique-filename@2.0.1: - dependencies: - unique-slug: 3.0.0 + undici@6.29.0: {} - unique-slug@3.0.0: - dependencies: - imurmurhash: 0.1.4 + undici@7.30.0: {} universal-github-app-jwt@1.2.0: dependencies: @@ -63602,13 +64080,52 @@ snapshots: universalify@2.0.1: {} + unpdf@1.8.1(@napi-rs/canvas@1.0.10): + optionalDependencies: + '@napi-rs/canvas': 1.0.10 + unpipe@1.0.0: {} + unrs-resolver@1.12.2: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.12.2 + '@unrs/resolver-binding-android-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-x64': 1.12.2 + '@unrs/resolver-binding-freebsd-x64': 1.12.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 + '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-musl': 1.12.2 + '@unrs/resolver-binding-openharmony-arm64': 1.12.2 + '@unrs/resolver-binding-wasm32-wasi': 1.12.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 + unused-filename@4.0.1: dependencies: escape-string-regexp: 5.0.0 path-exists: 5.0.0 + unzipper@0.12.5: + dependencies: + bluebird: 3.7.2 + duplexer2: 0.1.4 + fs-extra: 11.3.1 + graceful-fs: 4.2.11 + node-int64: 0.4.0 + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: browserslist: 4.28.2 @@ -63619,14 +64136,14 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.102.1))(webpack@5.102.1): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.111.1(postcss@8.5.28)))(webpack@5.111.1(postcss@8.5.28)): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.102.1 + webpack: 5.111.1(postcss@8.5.28) optionalDependencies: - file-loader: 6.2.0(webpack@5.102.1) + file-loader: 6.2.0(webpack@5.111.1(postcss@8.5.28)) url-parse@1.5.10: dependencies: @@ -63662,7 +64179,7 @@ snapshots: base64-arraybuffer: 1.0.2 optional: true - uuid@11.1.0: {} + uuid@11.1.1: {} uuid@3.4.0: {} @@ -63682,53 +64199,16 @@ snapshots: vary@1.1.2: {} - verror@1.10.1: - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.4.1 - optional: true - - vscode-jsonrpc@8.2.0: {} - - vscode-languageserver-protocol@3.17.5: - dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-languageserver@9.0.1: - dependencies: - vscode-languageserver-protocol: 3.17.5 - - vscode-uri@3.0.8: {} - w3c-keyname@2.2.8: {} w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - - watchpack@2.4.4: + watchpack@2.5.2: dependencies: - glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - wbuf@1.7.3: - dependencies: - minimalistic-assert: 1.0.1 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - web-push@3.6.7: dependencies: asn1.js: 5.4.1 @@ -63743,6 +64223,14 @@ snapshots: web-streams-polyfill@4.0.0-beta.3: {} + webcrypto-core@1.9.2: + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/json-schema': 1.1.12 + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + webdriver-bidi-protocol@0.4.3: {} webidl-conversions@3.0.1: {} @@ -63767,12 +64255,12 @@ snapshots: - bufferutil - utf-8-validate - webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1): + webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@6.0.0)(webpack@5.111.1): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.102.1) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.102.1) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.2)(webpack@5.102.1) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.111.1) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.111.1) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@6.0.0)(webpack@5.111.1) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 @@ -63781,59 +64269,54 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-bundle-analyzer: 4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - webpack-dev-server: 4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1) + webpack-dev-server: 6.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.111.1) - webpack-dev-middleware@5.3.4(webpack@5.102.1): + webpack-dev-middleware@8.3.0(webpack@5.111.1): dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 + ansi-html-community: 0.0.8 + memfs: 4.80.0 + mime-types: 3.0.2 + range-parser: 1.3.0 schema-utils: 4.3.3 - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + optionalDependencies: + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) - webpack-dev-server@4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1): + webpack-dev-server@6.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.111.1): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.25 + '@types/express': 5.0.6 + '@types/express-serve-static-core': 5.1.3 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.10 - '@types/sockjs': 0.3.36 + '@types/serve-static': 2.2.0 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 bonjour-service: 1.3.0 - chokidar: 3.6.0 - colorette: 2.0.20 + chokidar: 5.0.0 compression: 1.8.1 connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.21.2 + express: 5.2.1 graceful-fs: 4.2.11 - html-entities: 2.6.0 - http-proxy-middleware: 2.0.9(@types/express@4.17.25) - ipaddr.js: 2.2.0 - launch-editor: 2.12.0 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 + http-proxy-middleware: 4.2.0 + ipaddr.js: 2.5.0 + launch-editor: 2.14.2 + open: 11.0.4 + p-retry: 8.0.1 schema-utils: 4.3.3 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.102.1) + selfsigned: 5.5.0 + serve-index: 1.9.2 + tinyglobby: 0.2.17 + webpack-dev-middleware: 8.3.0(webpack@5.111.1) ws: 8.21.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1) + webpack: 5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@6.0.0)(webpack@5.111.1) transitivePeerDependencies: - bufferutil - - debug - supports-color - utf-8-validate @@ -63848,118 +64331,125 @@ snapshots: source-list-map: 2.0.1 source-map: 0.6.1 - webpack-sources@3.3.3: {} + webpack-sources@3.6.0: {} - webpack@5.102.1: + webpack@5.111.1(esbuild@0.25.12)(postcss@8.5.28)(webpack-cli@5.1.4): 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.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 + enhanced-resolve: 5.26.0 + es-module-lexer: 2.3.2 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.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 + mime-db: 1.54.0 + minimizer-webpack-plugin: 5.13.0(esbuild@0.25.12)(postcss@8.5.28)(webpack@5.111.1) + schema-utils: 4.5.0 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(webpack@5.102.1) - watchpack: 2.4.4 - webpack-sources: 3.3.3 + watchpack: 2.5.2 + webpack-sources: 3.6.0 + optionalDependencies: + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@6.0.0)(webpack@5.111.1) transitivePeerDependencies: + - '@minify-html/node' + - '@napi-rs/image' - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso - esbuild + - html-minifier-terser + - imagemin + - lightningcss + - postcss + - sharp + - svgo - uglify-js - webpack@5.102.1(esbuild@0.25.12): + webpack@5.111.1(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6)): 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.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 + enhanced-resolve: 5.26.0 + es-module-lexer: 2.3.2 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.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 + mime-db: 1.54.0 + minimizer-webpack-plugin: 5.13.0(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6))(webpack@5.111.1(esbuild@0.25.12)(sharp@0.35.5(@types/node@24.13.6))) + schema-utils: 4.5.0 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.12)(webpack@5.102.1(esbuild@0.25.12)) - watchpack: 2.4.4 - webpack-sources: 3.3.3 + watchpack: 2.5.2 + webpack-sources: 3.6.0 transitivePeerDependencies: + - '@minify-html/node' + - '@napi-rs/image' - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso - esbuild + - html-minifier-terser + - imagemin + - lightningcss + - postcss + - sharp + - svgo - uglify-js - webpack@5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4): + webpack@5.111.1(postcss@8.5.28): 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.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 + enhanced-resolve: 5.26.0 + es-module-lexer: 2.3.2 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.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 + mime-db: 1.54.0 + minimizer-webpack-plugin: 5.13.0(postcss@8.5.28)(webpack@5.111.1(postcss@8.5.28)) + schema-utils: 4.5.0 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.12)(webpack@5.102.1) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1) + watchpack: 2.5.2 + webpack-sources: 3.6.0 transitivePeerDependencies: + - '@minify-html/node' + - '@napi-rs/image' - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso - esbuild + - html-minifier-terser + - imagemin + - lightningcss + - postcss + - sharp + - svgo - uglify-js webrtc-adapter@9.0.6: dependencies: sdp: 3.2.1 - websocket-driver@0.7.4: - dependencies: - http-parser-js: 0.5.10 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - websocket-extensions@0.1.4: {} - websocket@1.0.35: dependencies: bufferutil: 4.0.9 @@ -64036,9 +64526,13 @@ snapshots: dependencies: isexe: 2.0.0 - wide-align@1.1.5: + which@5.0.0: dependencies: - string-width: 4.2.3 + isexe: 3.1.5 + + which@6.0.1: + dependencies: + isexe: 4.0.0 wildcard@2.0.1: {} @@ -64111,10 +64605,10 @@ snapshots: imurmurhash: 0.1.4 slide: 1.1.6 - write-file-atomic@4.0.2: + write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 - signal-exit: 3.0.7 + signal-exit: 4.1.0 ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: @@ -64131,6 +64625,11 @@ snapshots: bufferutil: 4.0.9 utf-8-validate: 6.0.5 + wsl-utils@1.0.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.2.1 + xhr@2.6.0: dependencies: global: 4.4.0 @@ -64258,11 +64757,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - yjs@13.6.27: dependencies: lib0: 0.2.114 diff --git a/common/scripts/package.json b/common/scripts/package.json index b493155449..e1f3d6bb45 100644 --- a/common/scripts/package.json +++ b/common/scripts/package.json @@ -7,16 +7,17 @@ }, "template": "none", "devDependencies": { + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "esbuild": "^0.25.10", - "sharp": "~0.34.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0" + "sharp": "~0.35.3", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0" }, "private": true } diff --git a/desktop-package/package.json b/desktop-package/package.json index 348624383c..9baaaef3cc 100644 --- a/desktop-package/package.json +++ b/desktop-package/package.json @@ -28,20 +28,21 @@ "node-loader": "~2.0.0", "cross-env": "~7.0.3", "typescript": "^5.9.3", - "electron": "^38.2.2", + "electron": "^43.4.1", "@types/node": "^24.13.3", - "electron-builder": "^25.1.8", + "electron-builder": "^26.15.3", "@electron/notarize": "^2.3.2", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0" + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { - "electron-squirrel-startup": "~1.0.0", + "electron-squirrel-startup": "~1.0.1", "dotenv": "^16.4.5" }, "homepage": "https://huly.io/", diff --git a/desktop/.eslintrc.js b/desktop/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/desktop/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/desktop/eslint.config.mjs b/desktop/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/desktop/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/desktop/package.json b/desktop/package.json index c6d740a1ae..37777fbfb9 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -34,14 +34,14 @@ "node-loader": "~2.0.0", "cross-env": "~7.0.3", "webpack-cli": "^5.1.4", - "webpack": "^5.97.1", + "webpack": "^5.110.3", "mini-css-extract-plugin": "^2.2.0", "dotenv-webpack": "^8.0.1", "ts-loader": "^9.2.5", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", "css-loader": "^5.2.1", - "webpack-dev-server": "^4.15.2", + "webpack-dev-server": "^6.0.0", "style-loader": "^3.3.1", "file-loader": "^6.2.0", "sass": "^1.80.0", @@ -49,10 +49,10 @@ "webpack-bundle-analyzer": "^4.10.2", "svgo-loader": "^3.0.0", "autoprefixer": "^10.4.14", - "postcss": "^8.4.20", + "postcss": "8.5.28", "postcss-loader": "^7.0.2", "postcss-load-config": "^4.0.1", - "compression-webpack-plugin": "^10.0.0", + "compression-webpack-plugin": "^12.0.0", "html-webpack-plugin": "^5.5.0", "fork-ts-checker-webpack-plugin": "^9.0.2", "update-browserslist-db": "^1.2.3", @@ -60,25 +60,26 @@ "typescript": "^5.9.3", "ts-node": "^10.9.2", "ts-node-dev": "^2.0.0", - "electron": "^38.2.2", + "electron": "^43.4.1", "@types/node": "^24.13.3", - "copy-webpack-plugin": "^11.0.0", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "copy-webpack-plugin": "^14.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint": "^9.39.5", "prettier": "^3.6.2", "esbuild": "^0.25.10", "esbuild-loader": "^4.3.0", "@types/ws": "^8.18.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@testing-library/jest-dom": "^6.6.3", - "jest-environment-jsdom": "^30.2.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@testing-library/jest-dom": "6.9.1", + "jest-environment-jsdom": "^30.4.1", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -283,15 +284,15 @@ "@hcengineering/rating": "workspace:^0.7.0", "@hcengineering/rating-assets": "workspace:^0.7.0", "@hcengineering/rating-resources": "workspace:^0.7.0", - "electron-squirrel-startup": "~1.0.0", + "electron-squirrel-startup": "~1.0.1", "dotenv": "^16.4.5", - "electron-context-menu": "^4.0.4", + "electron-context-menu": "^4.1.2", "electron-windows-badge": "^1.1.0", "svelte": "^4.2.20", "commander": "^14.0.0", "electron-store": "^8.2.0", - "electron-log": "^5.1.7", - "electron-updater": "^6.3.4", + "electron-log": "^5.4.4", + "electron-updater": "^6.8.9", "livekit-client": "^2.19.0", "@hcengineering/server-backup": "workspace:^0.7.0", "@hcengineering/communication-types": "workspace:^0.7.12", diff --git a/desktop/src/ui/platform.ts b/desktop/src/ui/platform.ts index 3250b8607c..0b4d1fd19a 100644 --- a/desktop/src/ui/platform.ts +++ b/desktop/src/ui/platform.ts @@ -88,67 +88,123 @@ import { ratingId } from '@hcengineering/rating' import billingPlugin, { billingId } from '@hcengineering/billing' import '@hcengineering/activity-assets' +import * as ActivityLang from '@hcengineering/activity-assets/lang' import '@hcengineering/analytics-collector-assets' import '@hcengineering/attachment-assets' +import * as AttachmentLang from '@hcengineering/attachment-assets/lang' import '@hcengineering/bitrix-assets' +import * as BitrixLang from '@hcengineering/bitrix-assets/lang' import '@hcengineering/board-assets' +import * as BoardLang from '@hcengineering/board-assets/lang' import '@hcengineering/calendar-assets' +import * as CalendarLang from '@hcengineering/calendar-assets/lang' import '@hcengineering/card-assets' +import * as CardLang from '@hcengineering/card-assets/lang' import '@hcengineering/chunter-assets' +import * as ChunterLang from '@hcengineering/chunter-assets/lang' import '@hcengineering/contact-assets' +import * as ContactLang from '@hcengineering/contact-assets/lang' import '@hcengineering/controlled-documents-assets' +import * as ControlledDocumentsLang from '@hcengineering/controlled-documents-assets/lang' import '@hcengineering/desktop-preferences-assets' +import * as DesktopPreferencesLang from '@hcengineering/desktop-preferences-assets/lang' import '@hcengineering/desktop-downloads-assets' +import * as DesktopDownloadsLang from '@hcengineering/desktop-downloads-assets/lang' import '@hcengineering/diffview-assets' +import * as DiffviewLang from '@hcengineering/diffview-assets/lang' import '@hcengineering/document-assets' +import * as DocumentLang from '@hcengineering/document-assets/lang' import '@hcengineering/drive-assets' +import * as DriveLang from '@hcengineering/drive-assets/lang' import '@hcengineering/export-assets' +import * as ExportLang from '@hcengineering/export-assets/lang' import '@hcengineering/gmail-assets' +import * as GmailLang from '@hcengineering/gmail-assets/lang' import '@hcengineering/guest-assets' +import * as GuestLang from '@hcengineering/guest-assets/lang' import '@hcengineering/global-profile-assets' +import * as GlobalProfileLang from '@hcengineering/global-profile-assets/lang' import '@hcengineering/hr-assets' +import * as HrLang from '@hcengineering/hr-assets/lang' import '@hcengineering/inventory-assets' +import * as InventoryLang from '@hcengineering/inventory-assets/lang' import '@hcengineering/lead-assets' +import * as LeadLang from '@hcengineering/lead-assets/lang' import '@hcengineering/login-assets' +import * as LoginLang from '@hcengineering/login-assets/lang' import '@hcengineering/love-assets' +import * as LoveLang from '@hcengineering/love-assets/lang' import '@hcengineering/notification-assets' +import * as NotificationLang from '@hcengineering/notification-assets/lang' +import '@hcengineering/onboard-assets' +import * as OnboardLang from '@hcengineering/onboard-assets/lang' import '@hcengineering/preference-assets' +import * as PreferenceLang from '@hcengineering/preference-assets/lang' import '@hcengineering/print-assets' +import * as PrintLang from '@hcengineering/print-assets/lang' import '@hcengineering/process-assets' +import * as ProcessLang from '@hcengineering/process-assets/lang' import '@hcengineering/products-assets' +import * as ProductsLang from '@hcengineering/products-assets/lang' import '@hcengineering/questions-assets' +import * as QuestionsLang from '@hcengineering/questions-assets/lang' import '@hcengineering/recruit-assets' +import * as RecruitLang from '@hcengineering/recruit-assets/lang' import '@hcengineering/request-assets' +import * as RequestLang from '@hcengineering/request-assets/lang' import '@hcengineering/setting-assets' +import * as SettingLang from '@hcengineering/setting-assets/lang' import '@hcengineering/support-assets' +import * as SupportLang from '@hcengineering/support-assets/lang' import '@hcengineering/survey-assets' +import * as SurveyLang from '@hcengineering/survey-assets/lang' import '@hcengineering/tags-assets' +import * as TagsLang from '@hcengineering/tags-assets/lang' import '@hcengineering/task-assets' +import * as TaskLang from '@hcengineering/task-assets/lang' import '@hcengineering/telegram-assets' +import * as TelegramLang from '@hcengineering/telegram-assets/lang' import '@hcengineering/templates-assets' +import * as TemplatesLang from '@hcengineering/templates-assets/lang' import '@hcengineering/test-management-assets' +import * as TestManagementLang from '@hcengineering/test-management-assets/lang' import '@hcengineering/text-editor-assets' +import * as TextEditorLang from '@hcengineering/text-editor-assets/lang' import '@hcengineering/time-assets' +import * as TimeLang from '@hcengineering/time-assets/lang' import '@hcengineering/tracker-assets' +import * as TrackerLang from '@hcengineering/tracker-assets/lang' import '@hcengineering/training-assets' +import * as TrainingLang from '@hcengineering/training-assets/lang' import '@hcengineering/uploader-assets' +import * as UploaderLang from '@hcengineering/uploader-assets/lang' import '@hcengineering/recorder-assets' +import * as RecorderLang from '@hcengineering/recorder-assets/lang' import '@hcengineering/view-assets' +import * as ViewLang from '@hcengineering/view-assets/lang' import '@hcengineering/workbench-assets' +import * as WorkbenchLang from '@hcengineering/workbench-assets/lang' import '@hcengineering/mail-assets' import '@hcengineering/chat-assets' import '@hcengineering/inbox-assets' import '@hcengineering/achievement-assets' +import * as AchievementLang from '@hcengineering/achievement-assets/lang' import '@hcengineering/emoji-assets' +import * as EmojiLang from '@hcengineering/emoji-assets/lang' import '@hcengineering/media-assets' import '@hcengineering/communication-assets' import '@hcengineering/billing-assets' +import * as BillingLang from '@hcengineering/billing-assets/lang' import '@hcengineering/huly-mail-assets' +import * as HulyMailLang from '@hcengineering/huly-mail-assets/lang' import '@hcengineering/ai-assistant-assets' +import * as AiAssistantLang from '@hcengineering/ai-assistant-assets/lang' import '@hcengineering/rating-assets' import analyticsCollector, { analyticsCollectorId } from '@hcengineering/analytics-collector' import { coreId } from '@hcengineering/core' +import * as CoreLang from '@hcengineering/core/lang' +import * as PlatformLang from '@hcengineering/platform/lang' import love, { loveId } from '@hcengineering/love' import presentation, { createFileStorage, presentationId } from '@hcengineering/presentation' import print, { printId } from '@hcengineering/print' @@ -163,39 +219,19 @@ import { ipcMainExposed } from './typesUtils' import github, { githubId } from '@hcengineering/github' import '@hcengineering/github-assets' +import * as GithubLang from '@hcengineering/github-assets/lang' import { preferenceId } from '@hcengineering/preference' import { uiId } from '@hcengineering/ui/src/plugin' function configureI18n (): void { // Add localization - addStringsLoader( - platformId, - async (lang: string) => - await import( - /* webpackInclude: /\.json$/ */ - /* webpackMode: "lazy" */ - /* webpackChunkName: "lang-[request]" */ - `@hcengineering/platform/lang/${lang}.json` - ) - ) - addStringsLoader( - coreId, - async (lang: string) => - await import( - /* webpackInclude: /\.json$/ */ - /* webpackMode: "lazy" */ - /* webpackChunkName: "lang-[request]" */ - `@hcengineering/core/lang/${lang}.json` - ) - ) + addStringsLoader(platformId, PlatformLang.loadLang) + addStringsLoader(coreId, CoreLang.loadLang) addStringsLoader( presentationId, async (lang: string) => await import(`@hcengineering/presentation/lang/${lang}.json`) ) - addStringsLoader( - textEditorId, - async (lang: string) => await import(`@hcengineering/text-editor-assets/lang/${lang}.json`) - ) + addStringsLoader(textEditorId, TextEditorLang.loadLang) addStringsLoader(uiId, async (lang: string) => await import(`@hcengineering/ui/lang/${lang}.json`)) addStringsLoader(mediaId, async (lang: string) => await import(`@hcengineering/media-assets/lang/${lang}.json`)) addStringsLoader(uploaderId, async (lang: string) => await import(`@hcengineering/uploader-assets/lang/${lang}.json`)) diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json index d0b34862c1..6c0c1cf75c 100644 --- a/desktop/tsconfig.json +++ b/desktop/tsconfig.json @@ -9,7 +9,7 @@ "strictNullChecks": true, "sourceMap": true, "skipLibCheck": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "allowSyntheticDefaultImports": true, "lib": ["es2023", "dom", "ES2021.String", "ESNext.Array"] }, diff --git a/dev/base-image/front.Dockerfile b/dev/base-image/front.Dockerfile index 871877cf3c..82ef578178 100644 --- a/dev/base-image/front.Dockerfile +++ b/dev/base-image/front.Dockerfile @@ -9,5 +9,5 @@ ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true WORKDIR /app ENV NODE_ENV=production -RUN npm install --ignore-scripts=false --verbose bufferutil sharp@v0.34.3 utf-8-validate snappy --unsafe-perm +RUN npm install --ignore-scripts=false --verbose bufferutil sharp@v0.35.3 utf-8-validate snappy --unsafe-perm diff --git a/dev/base-image/preview.Dockerfile b/dev/base-image/preview.Dockerfile index 1e4f3b7fdc..5dc23b985b 100644 --- a/dev/base-image/preview.Dockerfile +++ b/dev/base-image/preview.Dockerfile @@ -17,4 +17,4 @@ ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true WORKDIR /app ENV NODE_ENV=production -RUN npm install --ignore-scripts=false --verbose bufferutil sharp@v0.34.3 utf-8-validate snappy --unsafe-perm +RUN npm install --ignore-scripts=false --verbose bufferutil sharp@v0.35.3 utf-8-validate snappy --unsafe-perm diff --git a/dev/base-image/rekoni.Dockerfile b/dev/base-image/rekoni.Dockerfile index 18214a706f..de17889af3 100644 --- a/dev/base-image/rekoni.Dockerfile +++ b/dev/base-image/rekoni.Dockerfile @@ -1,4 +1,15 @@ -FROM platformcollective/base +FROM node:24 + +RUN apt-get update +RUN apt-get install libjemalloc2 dumb-init +RUN apt-get clean + +ENV LD_PRELOAD=libjemalloc.so.2 +ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true + +WORKDIR /usr/src/app +ENV NODE_ENV=production +RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate snappy msgpackr msgpackr-extract --unsafe-perm RUN apt-get update && \ apt-get install -y --no-install-recommends \ @@ -7,4 +18,5 @@ RUN apt-get update && \ poppler-utils \ html2text \ unrtf -RUN npm install --ignore-scripts=false --verbose sharp@v0.34.3 pdfjs-dist@v2.12.313 --unsafe-perm \ No newline at end of file + +RUN npm install --ignore-scripts=false --verbose sharp@v0.35.3 pdfjs-dist@v6.2.108 --unsafe-perm \ No newline at end of file diff --git a/dev/doc-import-tool/.eslintrc.js b/dev/doc-import-tool/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/dev/doc-import-tool/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/dev/doc-import-tool/eslint.config.mjs b/dev/doc-import-tool/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/dev/doc-import-tool/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/dev/doc-import-tool/package.json b/dev/doc-import-tool/package.json index 81a511ab24..4c9f4b9f70 100644 --- a/dev/doc-import-tool/package.json +++ b/dev/doc-import-tool/package.json @@ -23,24 +23,25 @@ "devDependencies": { "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "ts-node": "^10.9.2", "esbuild": "^0.25.10", "@types/minio": "~7.0.11", "@types/node": "^24.13.3", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/htmlparser2": "^3.10.7", - "@types/domhandler": "^2.4.5" + "@types/domhandler": "^2.4.5", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/controlled-documents": "workspace:^0.7.0", @@ -58,9 +59,9 @@ "commander": "^14.0.0", "domhandler": "^5.0.3", "domutils": "^3.1.0", - "htmlparser2": "^9.0.0", + "htmlparser2": "~10.1.0", "mammoth": "^1.9.0", - "docx4js": "^3.2.20", + "docx4js": "^3.3.0", "zod": "^3.22.4" } } diff --git a/dev/doc-import-tool/src/extract/container.ts b/dev/doc-import-tool/src/extract/container.ts index cee34bfeb0..de6546923b 100644 --- a/dev/doc-import-tool/src/extract/container.ts +++ b/dev/doc-import-tool/src/extract/container.ts @@ -25,7 +25,7 @@ export abstract class Container { return this.title } - abstract getArray (): Container[] + abstract getArray(): Container[] } export class TableContainer extends Container { diff --git a/dev/doc-import-tool/src/extract/types.ts b/dev/doc-import-tool/src/extract/types.ts index 5ec7690388..939c3c450f 100644 --- a/dev/doc-import-tool/src/extract/types.ts +++ b/dev/doc-import-tool/src/extract/types.ts @@ -103,9 +103,7 @@ const tocSection = z.object({ node: tocParagraphSequence }) -const section = z.union([tocSection, genericSection]) - -export type SectionSpec = z.infer +export type SectionSpec = z.infer | z.infer export type TocSectionSpec = z.infer // #endregion diff --git a/dev/import-tool/.eslintrc.js b/dev/import-tool/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/dev/import-tool/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/dev/import-tool/Dockerfile b/dev/import-tool/Dockerfile index 47105486d8..3c9bc562d5 100644 --- a/dev/import-tool/Dockerfile +++ b/dev/import-tool/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/dev/import-tool/eslint.config.mjs b/dev/import-tool/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/dev/import-tool/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/dev/import-tool/package.json b/dev/import-tool/package.json index d647e89eb3..be6c9b7828 100644 --- a/dev/import-tool/package.json +++ b/dev/import-tool/package.json @@ -38,22 +38,23 @@ "devDependencies": { "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint": "^9.39.5", "ts-node": "^10.9.2", "esbuild": "^0.25.10", "@types/node": "^24.13.3", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/parser": "^8.67.0", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", "prettier": "^3.6.2", - "@types/js-yaml": "^4.0.9" + "@types/js-yaml": "^4.0.9", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", @@ -61,7 +62,7 @@ "@hcengineering/server-client": "workspace:^0.7.16", "@hcengineering/importer": "workspace:^0.7.0", "commander": "^14.0.0", - "js-yaml": "^4.1.0", + "js-yaml": "^4.3.2", "mammoth": "^1.9.0" } } diff --git a/dev/prod/.eslintrc.js b/dev/prod/.eslintrc.js deleted file mode 100644 index f0d3a23ec9..0000000000 --- a/dev/prod/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/dev/prod/eslint.config.mjs b/dev/prod/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/dev/prod/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/dev/prod/package.json b/dev/prod/package.json index 4df37adc3f..22a44e2b90 100644 --- a/dev/prod/package.json +++ b/dev/prod/package.json @@ -29,11 +29,19 @@ "deploy": "cp -p public/* dist && aws s3 sync dist s3://anticrm-platform --delete --acl public-read" }, "devDependencies": { + "eslint-plugin-secure-coding": "^5.4.4", + "eslint": "^9.39.5", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint-config-love": "^157.0.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", "autoprefixer": "^10.4.14", "browserslist": "^4.28.2", - "compression-webpack-plugin": "^10.0.0", + "compression-webpack-plugin": "^12.0.0", "cross-env": "~7.0.3", "css-loader": "^5.2.1", "dotenv-webpack": "^8.0.1", @@ -43,7 +51,7 @@ "fork-ts-checker-webpack-plugin": "^9.0.2", "html-webpack-plugin": "^5.5.0", "mini-css-extract-plugin": "^2.2.0", - "postcss": "^8.4.20", + "postcss": "8.5.28", "postcss-load-config": "^4.0.1", "postcss-loader": "^7.0.2", "sass": "^1.80.0", @@ -55,10 +63,10 @@ "ts-loader": "^9.2.5", "typescript": "^5.9.3", "update-browserslist-db": "^1.2.3", - "webpack": "^5.97.1", + "webpack": "^5.110.3", "webpack-bundle-analyzer": "^4.10.2", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.2" + "webpack-dev-server": "^6.0.0" }, "dependencies": { "@hcengineering/achievement": "workspace:^0.7.0", diff --git a/dev/prod/src/platform.ts b/dev/prod/src/platform.ts index 8844cc7104..be2fc86466 100644 --- a/dev/prod/src/platform.ts +++ b/dev/prod/src/platform.ts @@ -14,6 +14,7 @@ // import platform, { type Plugin, addLocation, addStringsLoader, platformId } from '@hcengineering/platform' +import * as PlatformLang from '@hcengineering/platform/lang' import { activityId } from '@hcengineering/activity' import aiBot, { aiBotId } from '@hcengineering/ai-bot' @@ -85,66 +86,121 @@ import { aiAssistantId } from '@hcengineering/ai-assistant' import { ratingId } from '@hcengineering/rating' import '@hcengineering/activity-assets' +import * as ActivityLang from '@hcengineering/activity-assets/lang' import '@hcengineering/analytics-collector-assets' import '@hcengineering/attachment-assets' +import * as AttachmentLang from '@hcengineering/attachment-assets/lang' import '@hcengineering/bitrix-assets' +import * as BitrixLang from '@hcengineering/bitrix-assets/lang' import '@hcengineering/board-assets' +import * as BoardLang from '@hcengineering/board-assets/lang' import '@hcengineering/calendar-assets' +import * as CalendarLang from '@hcengineering/calendar-assets/lang' import '@hcengineering/card-assets' +import * as CardLang from '@hcengineering/card-assets/lang' import '@hcengineering/chunter-assets' +import * as ChunterLang from '@hcengineering/chunter-assets/lang' import '@hcengineering/contact-assets' +import * as ContactLang from '@hcengineering/contact-assets/lang' import '@hcengineering/controlled-documents-assets' +import * as ControlledDocumentsLang from '@hcengineering/controlled-documents-assets/lang' import '@hcengineering/desktop-preferences-assets' +import * as DesktopPreferencesLang from '@hcengineering/desktop-preferences-assets/lang' import '@hcengineering/diffview-assets' +import * as DiffviewLang from '@hcengineering/diffview-assets/lang' import '@hcengineering/document-assets' +import * as DocumentLang from '@hcengineering/document-assets/lang' import '@hcengineering/drive-assets' +import * as DriveLang from '@hcengineering/drive-assets/lang' import '@hcengineering/export-assets' +import * as ExportLang from '@hcengineering/export-assets/lang' import '@hcengineering/gmail-assets' +import * as GmailLang from '@hcengineering/gmail-assets/lang' import '@hcengineering/guest-assets' +import * as GuestLang from '@hcengineering/guest-assets/lang' import '@hcengineering/global-profile-assets' +import * as GlobalProfileLang from '@hcengineering/global-profile-assets/lang' import '@hcengineering/hr-assets' +import * as HrLang from '@hcengineering/hr-assets/lang' import '@hcengineering/inventory-assets' +import * as InventoryLang from '@hcengineering/inventory-assets/lang' import '@hcengineering/lead-assets' +import * as LeadLang from '@hcengineering/lead-assets/lang' import '@hcengineering/login-assets' +import * as LoginLang from '@hcengineering/login-assets/lang' import '@hcengineering/love-assets' +import * as LoveLang from '@hcengineering/love-assets/lang' import '@hcengineering/notification-assets' -import '@hcengineering/preference-assets' +import * as OnboardLang from '@hcengineering/onboard-assets/lang' +import '@hcengineering/notification-assets' +import * as NotificationLang from '@hcengineering/notification-assets/lang' +import '@hcengineering/onboard-assets' +import * as PreferenceLang from '@hcengineering/preference-assets/lang' import '@hcengineering/print-assets' +import * as PrintLang from '@hcengineering/print-assets/lang' import '@hcengineering/process-assets' +import * as ProcessLang from '@hcengineering/process-assets/lang' import '@hcengineering/products-assets' +import * as ProductsLang from '@hcengineering/products-assets/lang' import '@hcengineering/questions-assets' +import * as QuestionsLang from '@hcengineering/questions-assets/lang' import '@hcengineering/recruit-assets' +import * as RecruitLang from '@hcengineering/recruit-assets/lang' import '@hcengineering/request-assets' +import * as RequestLang from '@hcengineering/request-assets/lang' import '@hcengineering/setting-assets' +import * as SettingLang from '@hcengineering/setting-assets/lang' import '@hcengineering/support-assets' +import * as SupportLang from '@hcengineering/support-assets/lang' import '@hcengineering/survey-assets' +import * as SurveyLang from '@hcengineering/survey-assets/lang' import '@hcengineering/tags-assets' +import * as TagsLang from '@hcengineering/tags-assets/lang' import '@hcengineering/task-assets' +import * as TaskLang from '@hcengineering/task-assets/lang' import '@hcengineering/telegram-assets' +import * as TelegramLang from '@hcengineering/telegram-assets/lang' import '@hcengineering/templates-assets' +import * as TemplatesLang from '@hcengineering/templates-assets/lang' import '@hcengineering/test-management-assets' +import * as TestManagementLang from '@hcengineering/test-management-assets/lang' import '@hcengineering/text-editor-assets' +import * as TextEditorLang from '@hcengineering/text-editor-assets/lang' import '@hcengineering/time-assets' +import * as TimeLang from '@hcengineering/time-assets/lang' import '@hcengineering/tracker-assets' +import * as TrackerLang from '@hcengineering/tracker-assets/lang' import '@hcengineering/training-assets' +import * as TrainingLang from '@hcengineering/training-assets/lang' import '@hcengineering/uploader-assets' +import * as UploaderLang from '@hcengineering/uploader-assets/lang' import '@hcengineering/recorder-assets' +import * as RecorderLang from '@hcengineering/recorder-assets/lang' import '@hcengineering/media-assets' +import * as MediaLang from '@hcengineering/media-assets/lang' import '@hcengineering/view-assets' +import * as ViewLang from '@hcengineering/view-assets/lang' import '@hcengineering/workbench-assets' import '@hcengineering/chat-assets' import '@hcengineering/inbox-assets' import '@hcengineering/mail-assets' +import * as MailLang from '@hcengineering/mail-assets/lang' import '@hcengineering/github-assets' +import * as GithubLang from '@hcengineering/github-assets/lang' import '@hcengineering/achievement-assets' import '@hcengineering/communication-assets' import '@hcengineering/emoji-assets' +import * as EmojiLang from '@hcengineering/emoji-assets/lang' import '@hcengineering/billing-assets' +import * as BillingLang from '@hcengineering/billing-assets/lang' import '@hcengineering/huly-mail-assets' +import * as HulyMailLang from '@hcengineering/huly-mail-assets/lang' import '@hcengineering/ai-assistant-assets' +import * as AiAssistantLang from '@hcengineering/ai-assistant-assets/lang' import '@hcengineering/rating-assets' import { coreId } from '@hcengineering/core' +import * as CoreLang from '@hcengineering/core/lang' import presentation, { loadServerConfig, createFileStorage, presentationId } from '@hcengineering/presentation' import { setMetadata } from '@hcengineering/platform' @@ -278,34 +334,13 @@ const PASSWORD_REQUIREMENTS: Record, function configureI18n(): void { // Add localization - addStringsLoader( - platformId, - async (lang: string) => - await import( - /* webpackInclude: /\.json$/ */ - /* webpackMode: "lazy" */ - /* webpackChunkName: "lang-[request]" */ - `@hcengineering/platform/lang/${lang}.json` - ) - ) - addStringsLoader( - coreId, - async (lang: string) => - await import( - /* webpackInclude: /\.json$/ */ - /* webpackMode: "lazy" */ - /* webpackChunkName: "lang-[request]" */ - `@hcengineering/core/lang/${lang}.json` - ) - ) + addStringsLoader(platformId, PlatformLang.loadLang) + addStringsLoader(coreId, CoreLang.loadLang) addStringsLoader( presentationId, async (lang: string) => await import(`@hcengineering/presentation/lang/${lang}.json`) ) - addStringsLoader( - textEditorId, - async (lang: string) => await import(`@hcengineering/text-editor-assets/lang/${lang}.json`) - ) + addStringsLoader(textEditorId, TextEditorLang.loadLang) addStringsLoader(uiId, async (lang: string) => await import(`@hcengineering/ui/lang/${lang}.json`)) addStringsLoader(uploaderId, async (lang: string) => await import(`@hcengineering/uploader-assets/lang/${lang}.json`)) addStringsLoader(recorderId, async (lang: string) => await import(`@hcengineering/recorder-assets/lang/${lang}.json`)) diff --git a/dev/prod/tsconfig.json b/dev/prod/tsconfig.json index 88ea8fe1cc..63500116e0 100644 --- a/dev/prod/tsconfig.json +++ b/dev/prod/tsconfig.json @@ -8,7 +8,7 @@ "declaration": true, "sourceMap": true, "skipLibCheck": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "declarationDir": "./types", "verbatimModuleSyntax": true, "allowSyntheticDefaultImports": true, diff --git a/dev/tool/.eslintrc.js b/dev/tool/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/dev/tool/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/dev/tool/Dockerfile b/dev/tool/Dockerfile index 47105486d8..3c9bc562d5 100644 --- a/dev/tool/Dockerfile +++ b/dev/tool/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/dev/tool/eslint.config.mjs b/dev/tool/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/dev/tool/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/dev/tool/package.json b/dev/tool/package.json index 98b1dedba1..5568fcde3c 100644 --- a/dev/tool/package.json +++ b/dev/tool/package.json @@ -43,26 +43,27 @@ "devDependencies": { "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "ts-node": "^10.9.2", "esbuild": "^0.25.10", "@types/minio": "~7.0.11", "@types/node": "^24.13.3", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/ws": "^8.18.1", "@types/mime-types": "~2.1.1", - "@types/request": "~2.48.8", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/js-yaml": "^4.0.9" + "@types/request": "~2.48.13", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@types/js-yaml": "^4.0.9", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@elastic/elasticsearch": "^7.17.14", @@ -178,13 +179,13 @@ "@hcengineering/s3": "workspace:^0.7.18", "@hcengineering/kvs-client": "workspace:^0.7.0", "commander": "^14.0.0", - "csv-parse": "~5.1.0", + "csv-parse": "~7.0.2", "email-addresses": "^5.0.0", "fast-equals": "^5.2.2", "libphonenumber-js": "^1.9.46", "mime-types": "~2.1.34", "mongodb": "^6.16.0", - "postgres": "^3.4.7", + "postgres": "^3.4.9", "ws": "^8.21.0", "bufferutil": "^4.0.8", "utf-8-validate": "^6.0.4", @@ -192,7 +193,7 @@ "msgpackr-extract": "^3.0.3", "@hcengineering/kafka": "workspace:^0.7.18", "@hcengineering/api-client": "workspace:^0.7.25", - "@faker-js/faker": "^8.4.1", + "@faker-js/faker": "^10.6.0", "@hcengineering/hulylake-client": "workspace:^0.7.18", "@hcengineering/communication-types": "workspace:^0.7.12", "@hcengineering/pod-rating": "workspace:^0.7.0" diff --git a/dev/tool/src/calendar.ts b/dev/tool/src/calendar.ts index 19444f3bef..349db35fed 100644 --- a/dev/tool/src/calendar.ts +++ b/dev/tool/src/calendar.ts @@ -66,7 +66,7 @@ export async function performCalendarAccountMigrations (db: Db, region: string | const oldNewIds = new Map(allWorkpaces.map((it) => [it.dataId ?? it.uuid, it])) const workspaceProvider: WorkspaceInfoProvider = { getWorkspaceInfo: async (workspaceUuid: WorkspaceUuid) => { - const ws = oldNewIds.get(workspaceUuid as any) ?? byId.get(workspaceUuid as any) + const ws = oldNewIds.get(workspaceUuid) ?? byId.get(workspaceUuid) if (ws == null) { console.error('No workspace found for token', workspaceUuid) return undefined diff --git a/dev/tool/src/communication.ts b/dev/tool/src/communication.ts index 30b833108a..e865ac38a6 100644 --- a/dev/tool/src/communication.ts +++ b/dev/tool/src/communication.ts @@ -70,7 +70,7 @@ import { markupToMarkdown } from '@hcengineering/text-markdown' import { markupToJSON, markupToText } from '@hcengineering/text' import activity, { type ActivityMessage } from '@hcengineering/activity' import communication, { type Direct } from '@hcengineering/communication' -import { type Employee, formatName, type Person, type PersonSpace } from '@hcengineering/contact' +import { formatName, type Person, type PersonSpace } from '@hcengineering/contact' import { withRetry, DEFAULT_RETRY_OPTIONS } from '@hcengineering/retry' import attachment from '@hcengineering/attachment' @@ -304,7 +304,7 @@ async function migrateDirect ( const createMembers = new Set(persons.map((p) => p._id)) if (directMembers.size !== createMembers.size) return false for (const item of directMembers) { - if (!createMembers.has(item as Ref)) return false + if (!createMembers.has(item)) return false } return true }) diff --git a/dev/tool/src/db.ts b/dev/tool/src/db.ts index 186d7a6c20..772d770dfc 100644 --- a/dev/tool/src/db.ts +++ b/dev/tool/src/db.ts @@ -463,8 +463,7 @@ export async function moveAccountDbFromMongoToPG ( ctx.info('Starting migration of invites...') const invitesCursor = mdb.invite.findCursor({}) try { - // eslint-disable-next-line @typescript-eslint/no-loss-of-precision - const MAX_INT_8 = 9223372036854775807 + const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER let invitesCount = 0 let invitesBatch: any[] = [] while (await invitesCursor.hasNext()) { @@ -476,11 +475,11 @@ export async function moveAccountDbFromMongoToPG ( delete (invite as any).id - if (invite.expiresOn > MAX_INT_8 || typeof invite.expiresOn !== 'number') { + if (invite.expiresOn > MAX_SAFE_INTEGER || typeof invite.expiresOn !== 'number') { invite.expiresOn = -1 } - if (["USER'", 'ADMIN'].includes(invite.role as any)) { + if (["USER'", 'ADMIN'].includes(invite.role)) { invite.role = AccountRole.User } diff --git a/dev/tool/src/github.ts b/dev/tool/src/github.ts index ad18191747..8c7bf5122d 100644 --- a/dev/tool/src/github.ts +++ b/dev/tool/src/github.ts @@ -145,7 +145,7 @@ export async function performGithubAccountMigrations ( if (systemAccounts.includes(account._id as any)) { ;(socialKeyByAccount as any)[account._id] = account._id } else { - socialKeyByAccount[account._id] = buildSocialIdString(getSocialKeyByOldEmail(account.email)) as any + socialKeyByAccount[account._id] = buildSocialIdString(getSocialKeyByOldEmail(account.email)) } } diff --git a/dev/tool/src/gmail.ts b/dev/tool/src/gmail.ts index 76756ba2b4..9301511692 100644 --- a/dev/tool/src/gmail.ts +++ b/dev/tool/src/gmail.ts @@ -87,7 +87,7 @@ export async function performGmailAccountMigrations ( const oldNewIds = new Map(allWorkpaces.map((it) => [it.dataId ?? it.uuid, it])) const workspaceProvider: WorkspaceInfoProvider = { getWorkspaceInfo: async (workspaceUuid: WorkspaceUuid) => { - const ws = oldNewIds.get(workspaceUuid as any) ?? byId.get(workspaceUuid as any) + const ws = oldNewIds.get(workspaceUuid) ?? byId.get(workspaceUuid) if (ws == null) { console.error('No workspace found for token', workspaceUuid) return undefined @@ -128,7 +128,7 @@ async function migrateGmailIntegrations ( for (const token of allTokens) { try { - const ws = await workspaceProvider.getWorkspaceInfo(token.workspace as any) + const ws = await workspaceProvider.getWorkspaceInfo(token.workspace) if (ws == null) { continue } @@ -222,7 +222,7 @@ async function migrateGmailHistory ( for (const history of allHistories) { try { - const ws = await workspaceProvider.getWorkspaceInfo(history.workspace as any) + const ws = await workspaceProvider.getWorkspaceInfo(history.workspace) if (ws == null) { continue } @@ -295,7 +295,7 @@ async function getSociaKeysMap ( if (systemAccounts.includes(account._id as any)) { ;(socialKeyByAccount as any)[account._id] = account._id } else { - socialKeyByAccount[account._id] = buildSocialIdString(getSocialKeyByOldEmail(account.email)) as any + socialKeyByAccount[account._id] = buildSocialIdString(getSocialKeyByOldEmail(account.email)) } } return socialKeyByAccount diff --git a/dev/tool/src/markup.ts b/dev/tool/src/markup.ts index 6c98c4d9a7..d47d7b4ba8 100644 --- a/dev/tool/src/markup.ts +++ b/dev/tool/src/markup.ts @@ -299,7 +299,7 @@ export async function restoreControlledDocContentForDoc ( } const data = await storageAdapter.read(ctx, wsIds, currentYdocId) - const buffer = Buffer.concat(data as any) + const buffer = Buffer.concat(data) await storageAdapter.put(ctx, wsIds, ydocId, buffer, 'application/ydoc', buffer.length) } catch (err: any) { console.error('failed to restore content for', doc._class, doc._id, err) @@ -359,7 +359,7 @@ export async function restoreMarkupRefsMongo ( try { const buffer = await storageAdapter.read(ctx, wsIds, ydocId) - const ydoc = yDocFromBuffer(Buffer.concat(buffer as any)) + const ydoc = yDocFromBuffer(Buffer.concat(buffer)) const jsonId = await saveCollabJson(ctx, storageAdapter, wsIds, collabId, ydoc) await collection.updateOne({ _id: doc._id }, { $set: { [attributeName]: jsonId } }) diff --git a/dev/tool/src/restoreGithub.ts b/dev/tool/src/restoreGithub.ts index 5da6fd95d5..c40b2a71ae 100644 --- a/dev/tool/src/restoreGithub.ts +++ b/dev/tool/src/restoreGithub.ts @@ -20,7 +20,7 @@ export async function restoreGithubIntegrations (dbUrl: string, dryrun: boolean) const accountClient = getAccountClient(token) const integrationSettings = await pgClient< - { workspaceId: WorkspaceUuid, createdBy: PersonId, installationId: number }[] + { workspaceId: WorkspaceUuid, createdBy: PersonId, installationId: number }[] >` SELECT "workspaceId", "createdBy", data -> 'installationId' "installationId" FROM github diff --git a/dev/tool/src/telegram.ts b/dev/tool/src/telegram.ts index 1590cf0fb1..4e339dd277 100644 --- a/dev/tool/src/telegram.ts +++ b/dev/tool/src/telegram.ts @@ -21,7 +21,6 @@ import { DOMAIN_TELEGRAM } from '@hcengineering/model-telegram' import { getMongoClient, getWorkspaceMongoDB } from '@hcengineering/mongo' import { type StorageAdapter } from '@hcengineering/server-core' import telegram, { type SharedTelegramMessage, type SharedTelegramMessages } from '@hcengineering/telegram' -import { type Document, type UpdateFilter } from 'mongodb' const LastMessages = 'last-msgs' @@ -45,8 +44,8 @@ export async function clearTelegramHistory ( const sharedMessages = await workspaceDB .collection(DOMAIN_TELEGRAM) .find({ - _class: telegram.class.SharedMessages - }) + _class: telegram.class.SharedMessages + }) .toArray() const sharedIds: Ref[] = [] for (const sharedMessage of sharedMessages) { @@ -87,7 +86,7 @@ export async function clearTelegramHistory ( $set: { items: 0 } - } as unknown as UpdateFilter + } ), workspaceDB.collection(DOMAIN_ATTACHMENT).deleteMany({ attachedToClass: telegram.class.Message diff --git a/dev/tool/src/workspace.ts b/dev/tool/src/workspace.ts index e790dbc1fe..01b2ff43c5 100644 --- a/dev/tool/src/workspace.ts +++ b/dev/tool/src/workspace.ts @@ -39,10 +39,10 @@ export async function diffWorkspace (mongoUrl: string, dbName: string, rawTxes: const currentModel = await db .collection(DOMAIN_TX) .find({ - objectSpace: core.space.Model, - modifiedBy: core.account.System, - objectClass: { $ne: 'contact:class:PersonAccount' } // Note: we may keep these transactions in old workspaces for history purposes - }) + objectSpace: core.space.Model, + modifiedBy: core.account.System, + objectClass: { $ne: 'contact:class:PersonAccount' } // Note: we may keep these transactions in old workspaces for history purposes + }) .toArray() const txes = rawTxes.filter((tx) => { diff --git a/foundations/communication/packages/client-query/eslint.config.mjs b/foundations/communication/packages/client-query/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/communication/packages/client-query/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/communication/packages/client-query/package.json b/foundations/communication/packages/client-query/package.json index b8634605cb..865ddca75c 100644 --- a/foundations/communication/packages/client-query/package.json +++ b/foundations/communication/packages/client-query/package.json @@ -24,19 +24,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", "esbuild-plugin-copy": "~2.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", + "ts-jest": "^29.4.12" }, "dependencies": { "@hcengineering/communication-types": "workspace:^0.7.12", diff --git a/foundations/communication/packages/cockroach/eslint.config.mjs b/foundations/communication/packages/cockroach/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/communication/packages/cockroach/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/communication/packages/cockroach/package.json b/foundations/communication/packages/cockroach/package.json index 2cc282b958..2d8cc351c4 100644 --- a/foundations/communication/packages/cockroach/package.json +++ b/foundations/communication/packages/cockroach/package.json @@ -24,28 +24,28 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", "esbuild-plugin-copy": "~2.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", "prettier": "^3.6.2", "typescript": "^5.9.3", - "@types/uuid": "^8.3.1" + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", + "ts-jest": "^29.4.12" }, "dependencies": { "@hcengineering/communication-types": "workspace:^0.7.12", "@hcengineering/communication-sdk-types": "workspace:^0.7.12", "@hcengineering/communication-shared": "workspace:^0.7.11", - "postgres": "^3.4.7", - "uuid": "^8.3.2" + "postgres": "^3.4.9", + "uuid": "^11.1.1" }, "repository": { "type": "git", diff --git a/foundations/communication/packages/query/eslint.config.mjs b/foundations/communication/packages/query/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/communication/packages/query/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/communication/packages/query/package.json b/foundations/communication/packages/query/package.json index 0a94da10ca..c45ecee6f4 100644 --- a/foundations/communication/packages/query/package.json +++ b/foundations/communication/packages/query/package.json @@ -24,20 +24,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", "esbuild-plugin-copy": "~2.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "@types/uuid": "^8.3.1" + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", + "ts-jest": "^29.4.12" }, "dependencies": { "@hcengineering/communication-sdk-types": "workspace:^0.7.12", @@ -45,7 +45,7 @@ "@hcengineering/communication-types": "workspace:^0.7.12", "@hcengineering/hulylake-client": "workspace:^0.7.18", "fast-equals": "^5.2.2", - "uuid": "^8.3.2" + "uuid": "^11.1.1" }, "repository": { "type": "git", diff --git a/foundations/communication/packages/rest-client/eslint.config.mjs b/foundations/communication/packages/rest-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/communication/packages/rest-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/communication/packages/rest-client/package.json b/foundations/communication/packages/rest-client/package.json index b78c148777..79c15ed382 100644 --- a/foundations/communication/packages/rest-client/package.json +++ b/foundations/communication/packages/rest-client/package.json @@ -24,20 +24,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", "esbuild-plugin-copy": "~2.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "@types/snappyjs": "^0.7.1" + "@types/snappyjs": "^0.7.1", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", + "ts-jest": "^29.4.12" }, "dependencies": { "@hcengineering/communication-types": "workspace:^0.7.12", diff --git a/foundations/communication/packages/sdk-types/eslint.config.mjs b/foundations/communication/packages/sdk-types/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/communication/packages/sdk-types/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/communication/packages/sdk-types/package.json b/foundations/communication/packages/sdk-types/package.json index 7d9fcae75b..fe00ffe5d3 100644 --- a/foundations/communication/packages/sdk-types/package.json +++ b/foundations/communication/packages/sdk-types/package.json @@ -24,19 +24,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", "esbuild-plugin-copy": "~2.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", + "ts-jest": "^29.4.12" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/foundations/communication/packages/server/eslint.config.mjs b/foundations/communication/packages/server/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/communication/packages/server/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/communication/packages/server/package.json b/foundations/communication/packages/server/package.json index bc892c856a..1fb9ac5e3a 100644 --- a/foundations/communication/packages/server/package.json +++ b/foundations/communication/packages/server/package.json @@ -26,22 +26,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@types/uuid": "^8.3.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", "esbuild-plugin-copy": "~2.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0" }, "dependencies": { "@hcengineering/account-client": "workspace:^0.7.25", @@ -54,7 +53,7 @@ "@hcengineering/text-core": "workspace:^0.7.19", "@hcengineering/text-markdown": "workspace:^0.7.21", "@hcengineering/hulylake-client": "workspace:^0.7.18", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "zod": "^3.22.4" }, "repository": { diff --git a/foundations/communication/packages/shared/eslint.config.mjs b/foundations/communication/packages/shared/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/foundations/communication/packages/shared/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/foundations/communication/packages/shared/package.json b/foundations/communication/packages/shared/package.json index 5082787772..eaad6a156e 100644 --- a/foundations/communication/packages/shared/package.json +++ b/foundations/communication/packages/shared/package.json @@ -24,19 +24,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", "esbuild-plugin-copy": "~2.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", + "ts-jest": "^29.4.12" }, "dependencies": { "@hcengineering/communication-types": "workspace:^0.7.12", diff --git a/foundations/communication/packages/types/eslint.config.mjs b/foundations/communication/packages/types/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/communication/packages/types/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/communication/packages/types/package.json b/foundations/communication/packages/types/package.json index 35d460e14c..5211b6a215 100644 --- a/foundations/communication/packages/types/package.json +++ b/foundations/communication/packages/types/package.json @@ -24,19 +24,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", "esbuild-plugin-copy": "~2.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", + "ts-jest": "^29.4.12" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26" diff --git a/foundations/core/common/config/rush/pnpm-lock.yaml b/foundations/core/common/config/rush/pnpm-lock.yaml index e3aeaad995..0614703015 100644 --- a/foundations/core/common/config/rush/pnpm-lock.yaml +++ b/foundations/core/common/config/rush/pnpm-lock.yaml @@ -21,19 +21,19 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -41,32 +41,29 @@ importers: specifier: ^0.25.10 version: 0.25.11 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -79,43 +76,40 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -143,43 +137,40 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -216,62 +207,59 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@types/snappyjs': specifier: ^0.7.1 version: 0.7.1 '@types/ws': - specifier: ^8.5.12 + specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.18.10)(typescript@5.9.3) + version: 10.9.2(@types/node@24.13.3)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 optionalDependencies: ws: - specifier: ^8.18.2 - version: 8.18.3 + specifier: ^8.21.0 + version: 8.21.3 ../../packages/client: dependencies: @@ -284,46 +272,43 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -351,58 +336,55 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@types/snappyjs': specifier: ^0.7.1 version: 0.7.1 '@types/ws': - specifier: ^8.5.12 + specifier: ^8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 ws: - specifier: ^8.18.2 - version: 8.18.3 + specifier: ^8.21.0 + version: 8.21.3 ../../packages/collaborator-client: dependencies: @@ -412,19 +394,19 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -432,32 +414,29 @@ importers: specifier: ^0.25.10 version: 0.25.11 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -479,46 +458,43 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -534,19 +510,19 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -554,32 +530,29 @@ importers: specifier: ^0.25.10 version: 0.25.11 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -588,40 +561,37 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) ../../packages/measurements-otlp: dependencies: @@ -629,84 +599,81 @@ importers: specifier: workspace:^0.7.19 version: link:../measurements '@opentelemetry/api': - specifier: ^1.9.0 - version: 1.9.0 + specifier: ^1.9.1 + version: 1.9.1 '@opentelemetry/api-logs': - specifier: ^0.203.0 - version: 0.203.0 + specifier: ^0.221.0 + version: 0.221.0 '@opentelemetry/auto-instrumentations-node': - specifier: ^0.62.0 - version: 0.62.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)) + specifier: ^0.79.0 + version: 0.79.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1)) '@opentelemetry/core': - specifier: ^2.0.1 - version: 2.1.0(@opentelemetry/api@1.9.0) + specifier: ^2.10.0 + version: 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/exporter-logs-otlp-http': - specifier: ^0.203.0 - version: 0.203.0(@opentelemetry/api@1.9.0) + specifier: ^0.221.0 + version: 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/exporter-metrics-otlp-http': - specifier: ^0.203.0 - version: 0.203.0(@opentelemetry/api@1.9.0) + specifier: ^0.221.0 + version: 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/exporter-trace-otlp-http': - specifier: ^0.203.0 - version: 0.203.0(@opentelemetry/api@1.9.0) + specifier: ^0.221.0 + version: 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/id-generator-aws-xray': - specifier: ^2.0.0 - version: 2.0.3(@opentelemetry/api@1.9.0) + specifier: ^2.1.0 + version: 2.1.0(@opentelemetry/api@1.9.1) '@opentelemetry/otlp-exporter-base': - specifier: ^0.203.0 - version: 0.203.0(@opentelemetry/api@1.9.0) + specifier: ^0.221.0 + version: 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/resources': - specifier: ^2.0.1 - version: 2.1.0(@opentelemetry/api@1.9.0) + specifier: ^2.10.0 + version: 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-logs': - specifier: ^0.203.0 - version: 0.203.0(@opentelemetry/api@1.9.0) + specifier: ^0.221.0 + version: 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-metrics': - specifier: ^2.0.1 - version: 2.1.0(@opentelemetry/api@1.9.0) + specifier: ^2.10.0 + version: 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-node': - specifier: ^0.203.0 - version: 0.203.0(@opentelemetry/api@1.9.0) + specifier: ^0.221.0 + version: 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-node': - specifier: ^2.0.1 - version: 2.1.0(@opentelemetry/api@1.9.0) + specifier: ^2.10.0 + version: 2.10.0(@opentelemetry/api@1.9.1) devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) ../../packages/model: dependencies: @@ -737,49 +704,46 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@types/toposort': specifier: ^2.0.3 version: 2.0.7 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -792,43 +756,40 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -841,43 +802,40 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) ../../packages/query: dependencies: @@ -896,43 +854,40 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -948,43 +903,40 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -993,46 +945,43 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1051,46 +1000,43 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1109,46 +1055,43 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1161,19 +1104,19 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) cross-env: specifier: ~7.0.3 version: 7.0.3 @@ -1181,29 +1124,29 @@ importers: specifier: ^0.25.10 version: 0.25.11 eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) + eslint-plugin-svelte: + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1279,6 +1222,12 @@ importers: '@tiptap/extension-strike': specifier: ^2.11.7 version: 2.26.3(@tiptap/core@2.26.3(@tiptap/pm@2.26.3)) + '@tiptap/extension-subscript': + specifier: ^2.11.7 + version: 2.27.2(@tiptap/core@2.26.3(@tiptap/pm@2.26.3)) + '@tiptap/extension-superscript': + specifier: ^2.11.7 + version: 2.27.2(@tiptap/core@2.26.3(@tiptap/pm@2.26.3)) '@tiptap/extension-table': specifier: ^2.11.7 version: 2.26.3(@tiptap/core@2.26.3(@tiptap/pm@2.26.3))(@tiptap/pm@2.26.3) @@ -1333,7 +1282,7 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 @@ -1341,38 +1290,35 @@ importers: specifier: ~13.0.0 version: 13.0.9 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1391,7 +1337,7 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 @@ -1399,32 +1345,29 @@ importers: specifier: ~13.0.0 version: 13.0.9 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest-environment-jsdom: specifier: ^30.2.0 version: 30.2.0 @@ -1433,7 +1376,7 @@ importers: version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1449,43 +1392,40 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1507,7 +1447,7 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 @@ -1515,38 +1455,35 @@ importers: specifier: ~13.0.0 version: 13.0.9 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1571,40 +1508,37 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) fast-equals: specifier: ^5.2.2 version: 5.3.2 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest-environment-jsdom: specifier: ^30.2.0 version: 30.2.0 @@ -1613,7 +1547,7 @@ importers: version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1638,49 +1572,46 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@types/jest': specifier: ^29.5.5 version: 29.5.14 '@types/node': - specifier: ^22.18.1 - version: 22.18.10 + specifier: ^24.13.3 + version: 24.13.3 '@types/uuid': specifier: ^8.3.1 version: 8.3.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: specifier: ^3.6.2 version: 3.6.2 ts-jest: specifier: ^29.1.1 - version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1689,31 +1620,31 @@ importers: devDependencies: '@hcengineering/platform-rig': specifier: ^0.7.21 - version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + version: 0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@9.39.5)(typescript@5.9.3) eslint: - specifier: ^8.54.0 - version: 8.57.1 - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^9.39.5 + version: 9.39.5 + eslint-config-love: + specifier: ^155.0.0 + version: 155.0.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-import: - specifier: ^2.26.0 - version: 2.32.0(eslint@8.57.1) + specifier: ^2.32.0 + version: 2.32.0(eslint@9.39.5) eslint-plugin-n: - specifier: ^15.4.0 - version: 15.7.0(eslint@8.57.1) + specifier: ^18.3.0 + version: 18.3.0(eslint@9.39.5)(typescript@5.9.3) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.3.0 + version: 7.3.0(eslint@9.39.5) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + specifier: ^3.23.0 + version: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) packages: @@ -2084,6 +2015,18 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.7.2': + resolution: {integrity: sha512-LF03qURSwEWm2dz5wtdDCzNk+7Opl0X7q6I3undsaIuNsEiNvRV3BCtqu14Q/6Pzg1tBj44LcxpW2EpSLZStZw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2094,13 +2037,37 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.6': + resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.5': + resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@formatjs/ecma402-abstract@2.3.6': resolution: {integrity: sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==} @@ -2117,8 +2084,8 @@ packages: '@formatjs/intl-localematcher@0.6.2': resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} - '@grpc/grpc-js@1.14.0': - resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==} + '@grpc/grpc-js@1.14.4': + resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.8.0': @@ -2127,21 +2094,32 @@ packages: hasBin: true '@hcengineering/platform-rig@0.7.21': - resolution: {integrity: sha512-niaCihZZdmM7WYk5/UznA0St8BbjI3pbTeqPCnmM5TxP+ZRf3t1BV8XQpWOvIuhj7aRdVWUOPYIBKufQMoQ1TQ==} + resolution: {directory: ../../../utils/packages/platform-rig, type: directory} hasBin: true - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -2311,432 +2289,438 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@opentelemetry/api-logs@0.203.0': - resolution: {integrity: sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==} + '@opentelemetry/api-logs@0.221.0': + resolution: {integrity: sha512-OlanaW1vv7ufTqQ3/fPLI4arGt5ZoM+P8abOMki6uEYnpRazepSWDwDnnw+la7kE26SHVC18//SMccrDvLKOXQ==} engines: {node: '>=8.0.0'} - '@opentelemetry/api@1.9.0': - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + '@opentelemetry/api@1.9.1': + resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} engines: {node: '>=8.0.0'} - '@opentelemetry/auto-instrumentations-node@0.62.2': - resolution: {integrity: sha512-Ipe6X7ddrCiRsuewyTU83IvKiSFT4piqmv9z8Ovg1E7v98pdTj1pUE6sDrHV50zl7/ypd+cONBgt+EYSZu4u9Q==} + '@opentelemetry/auto-instrumentations-node@0.79.0': + resolution: {integrity: sha512-qL53aIjdw56sRDqz6LXD9h15vPTJgPpqv80rbsnRjzhuC9VqZ58fgk/lx0SdECJ2rcu8keeji5ZgjzJwiQZ0fg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.4.1 '@opentelemetry/core': ^2.0.0 - '@opentelemetry/context-async-hooks@2.0.1': - resolution: {integrity: sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==} + '@opentelemetry/configuration@0.221.0': + resolution: {integrity: sha512-uE9y56Zdi9Gt/RdxYnVOo3YmFZkKJJMA0gqtBe8wh8gdtF5Asqe+Oh/TWiDtFb1s+31jNY4CWgnfIB1KOITfFA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/api': ^1.9.0 - '@opentelemetry/context-async-hooks@2.1.0': - resolution: {integrity: sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==} + '@opentelemetry/context-async-hooks@2.10.0': + resolution: {integrity: sha512-bvyMcgLEkozzSzpEEEo1OMoeQ97bxj6Qs2uN3mPrSdDvObMI1myffD/BPqcLlzZO9//d1SqQA/WPw7Cz2AiqhA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.0.1': - resolution: {integrity: sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==} + '@opentelemetry/core@2.1.0': + resolution: {integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.1.0': - resolution: {integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==} + '@opentelemetry/core@2.10.0': + resolution: {integrity: sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/exporter-logs-otlp-grpc@0.203.0': - resolution: {integrity: sha512-g/2Y2noc/l96zmM+g0LdeuyYKINyBwN6FJySoU15LHPLcMN/1a0wNk2SegwKcxrRdE7Xsm7fkIR5n6XFe3QpPw==} + '@opentelemetry/exporter-logs-otlp-grpc@0.221.0': + resolution: {integrity: sha512-txG1G0IrYSsKKMeiWZfj/i5cQmWB+h+hf3HzPpF3RqZVwp+iQQEIsv8Vtmzy6RWVdHdJZfygmVrBI39YTBvWcw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-logs-otlp-http@0.203.0': - resolution: {integrity: sha512-s0hys1ljqlMTbXx2XiplmMJg9wG570Z5lH7wMvrZX6lcODI56sG4HL03jklF63tBeyNwK2RV1/ntXGo3HgG4Qw==} + '@opentelemetry/exporter-logs-otlp-http@0.221.0': + resolution: {integrity: sha512-nKXkr4Tomi6fjYVOf+ytcW3dZAVr4v4Bv5gsT6dr2gvpUPJpKgHB4XbMufMsPotRE3g0XH2GwVVCkN2w6SON+Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-logs-otlp-proto@0.203.0': - resolution: {integrity: sha512-nl/7S91MXn5R1aIzoWtMKGvqxgJgepB/sH9qW0rZvZtabnsjbf8OQ1uSx3yogtvLr0GzwD596nQKz2fV7q2RBw==} + '@opentelemetry/exporter-logs-otlp-proto@0.221.0': + resolution: {integrity: sha512-AH6EY+47gXFaWYgG3hfeOneGiE9xIZGtDBk+9g0sM8NZWzsQhhmqPbQQXJzS7pyCh5jRRr2nYNXVrkCmoojRvQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-grpc@0.203.0': - resolution: {integrity: sha512-FCCj9nVZpumPQSEI57jRAA89hQQgONuoC35Lt+rayWY/mzCAc6BQT7RFyFaZKJ2B7IQ8kYjOCPsF/HGFWjdQkQ==} + '@opentelemetry/exporter-metrics-otlp-grpc@0.221.0': + resolution: {integrity: sha512-KOgCtO15FC6C1T/xOqBcr7EyUs7B+7yomGNb5Y97d3s38rPbCCk5sewkmE2b0/itOkQ/PptX8CLlD+kn2mEtTg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-http@0.203.0': - resolution: {integrity: sha512-HFSW10y8lY6BTZecGNpV3GpoSy7eaO0Z6GATwZasnT4bEsILp8UJXNG5OmEsz4SdwCSYvyCbTJdNbZP3/8LGCQ==} + '@opentelemetry/exporter-metrics-otlp-http@0.221.0': + resolution: {integrity: sha512-sRfCKbOzgy8xZQV2as0RzIZlnCmCseCKZGLfRcrpo2CBngJDr+rPtX0zkG0+oUCV5kfQPUoW3W3C96Ag3Y/Clg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-proto@0.203.0': - resolution: {integrity: sha512-OZnhyd9npU7QbyuHXFEPVm3LnjZYifuKpT3kTnF84mXeEQ84pJJZgyLBpU4FSkSwUkt/zbMyNAI7y5+jYTWGIg==} + '@opentelemetry/exporter-metrics-otlp-proto@0.221.0': + resolution: {integrity: sha512-YMF4LveY2I3yhw61rn6nmC9FE8U24IZHPeKU1Duc5+sbwjMd8FwZAwba318ImdThCg/HuVQvhm2y6bfgNPnfYg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-prometheus@0.203.0': - resolution: {integrity: sha512-2jLuNuw5m4sUj/SncDf/mFPabUxMZmmYetx5RKIMIQyPnl6G6ooFzfeE8aXNRf8YD1ZXNlCnRPcISxjveGJHNg==} + '@opentelemetry/exporter-prometheus@0.221.0': + resolution: {integrity: sha512-kW79a20qWESIuAdDrxzg9WKM98twV/NBWBFRAH57ap/+ssZhiCo0hckzKT0zpuwR/gSHrFAQhJL0bYDrnEM34g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-grpc@0.203.0': - resolution: {integrity: sha512-322coOTf81bm6cAA8+ML6A+m4r2xTCdmAZzGNTboPXRzhwPt4JEmovsFAs+grpdarObd68msOJ9FfH3jxM6wqA==} + '@opentelemetry/exporter-trace-otlp-grpc@0.221.0': + resolution: {integrity: sha512-zXminlZedtq9LvOW64CnNkOqk15zV75k8JgtdTuWFge6+jk2m4GmAUm6L2eIiG1o2a2bZxXw2PDrszm+bps0IA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-http@0.203.0': - resolution: {integrity: sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==} + '@opentelemetry/exporter-trace-otlp-http@0.221.0': + resolution: {integrity: sha512-AySXiKoC+meiWm6zdVj5T2LnPDZuatveBby1cMOeQteIWsYXAUxs8Sru13G2pVSPrUXz6vF+og7QVBX6GdC/oQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-proto@0.203.0': - resolution: {integrity: sha512-1xwNTJ86L0aJmWRwENCJlH4LULMG2sOXWIVw+Szta4fkqKVY50Eo4HoVKKq6U9QEytrWCr8+zjw0q/ZOeXpcAQ==} + '@opentelemetry/exporter-trace-otlp-proto@0.221.0': + resolution: {integrity: sha512-Z9i2T7vgZbWe9rSLYxXVIbeW+XyzUq4rZanW3ZyVNwVDqCsh0EJKUgBWWQ0CZfeuUA+RQPzKgJQHMuWAUnKqXw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-zipkin@2.0.1': - resolution: {integrity: sha512-a9eeyHIipfdxzCfc2XPrE+/TI3wmrZUDFtG2RRXHSbZZULAny7SyybSvaDvS77a7iib5MPiAvluwVvbGTsHxsw==} + '@opentelemetry/exporter-zipkin@2.10.0': + resolution: {integrity: sha512-7gsvgf0UDoJ4l9ObrwBmz5G/ZogiPk+lq+g5GpLp24YQF/vPM/BSsnOfcLnfinast5ASUgLo78uSC/ObjlnXgg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 - '@opentelemetry/id-generator-aws-xray@2.0.3': - resolution: {integrity: sha512-IoJiHlNAYn/XetYUwWR2HvAQxzoh7Ef/V2toKjnRz26RckfywhJAGlzKMWc0D7XyKMbBxGGg8K9IcDVu1JuJXQ==} + '@opentelemetry/id-generator-aws-xray@2.1.0': + resolution: {integrity: sha512-hyyEpR6cwxmrXRSQPCIOUkTY+RQRM+zSUpzF3wnu56Ow7Rv+yU0N18b64cVoX2Ir98lFeesF6nrynEa4eN4gfw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 - '@opentelemetry/instrumentation-amqplib@0.50.0': - resolution: {integrity: sha512-kwNs/itehHG/qaQBcVrLNcvXVPW0I4FCOVtw3LHMLdYIqD7GJ6Yv2nX+a4YHjzbzIeRYj8iyMp0Bl7tlkidq5w==} + '@opentelemetry/instrumentation-amqplib@0.68.0': + resolution: {integrity: sha512-U9Fc3C061q+AGxP3xEJTIAJtBduY1GL21J4SjOSxCmmls4UUva16jzQ5ZkunQe0pKalrRjZ/DlZ+wgfgQxqjBw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-aws-lambda@0.54.1': - resolution: {integrity: sha512-qm8pGSAM1mXk7unbrGktWWGJc6IFI58ZsaHJ+i420Fp5VO3Vf7GglIgaXTS8CKBrVB4LHFj3NvzJg31PtsAQcA==} + '@opentelemetry/instrumentation-aws-lambda@0.73.0': + resolution: {integrity: sha512-N2BZFlWmVt2zjpiqPnfmIlj7tV/wfKSZCFF/laLAnJSTZjSEdc9JYSXW+KUV0FMUNDfpLCeAcI1xDMdGLdxFJg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-aws-sdk@0.58.0': - resolution: {integrity: sha512-9vFH7gU686dsAeLMCkqUj9y0MQZ1xrTtStSpNV2UaGWtDnRjJrAdJLu9Y545oKEaDTeVaob4UflyZvvpZnw3Xw==} + '@opentelemetry/instrumentation-aws-sdk@0.76.0': + resolution: {integrity: sha512-gg2QaDtWeFezRt2mAl9vBQ38y60tzUShKg1KA9uTgsMJimUHaBnB3X8kEH9Of8jKWT4DDoDcSA37gPcoEc0hiA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-bunyan@0.49.0': - resolution: {integrity: sha512-ky5Am1y6s3Ex/3RygHxB/ZXNG07zPfg9Z6Ora+vfeKcr/+I6CJbWXWhSBJor3gFgKN3RvC11UWVURnmDpBS6Pg==} + '@opentelemetry/instrumentation-bunyan@0.66.0': + resolution: {integrity: sha512-IqYQC1dav35NHlD5nYnpBXK8tI6KJ9/MIt8LYKFxwlhMIwfBCfavaklyP8NtVKoJ0WZKzX2v9Sh+xGK1XvSniQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-cassandra-driver@0.49.0': - resolution: {integrity: sha512-BNIvqldmLkeikfI5w5Rlm9vG5NnQexfPoxOgEMzfDVOEF+vS6351I6DzWLLgWWR9CNF/jQJJi/lr6am2DLp0Rw==} + '@opentelemetry/instrumentation-cassandra-driver@0.66.0': + resolution: {integrity: sha512-4ksN7PfXLg7raDyXIjIrtxxzuuDlUx6Fh0s8VXojdl+nn2o0xkYa9jrq1f9Bfqhm+Sce3GOa1RjE3ycvAwk6Xw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-connect@0.47.0': - resolution: {integrity: sha512-pjenvjR6+PMRb6/4X85L4OtkQCootgb/Jzh/l/Utu3SJHBid1F+gk9sTGU2FWuhhEfV6P7MZ7BmCdHXQjgJ42g==} + '@opentelemetry/instrumentation-connect@0.64.0': + resolution: {integrity: sha512-D1Tpom3BpY8g29FFOEQ2FZioVFjyXwXHsh3BOn2BHcg7Taipg+yc+DPGUwvdR4WZrKnNMAG/+FBXNa0S0KhJYA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-cucumber@0.19.0': - resolution: {integrity: sha512-99ms8kQWRuPt5lkDqbJJzD+7Tq5TMUlBZki4SA2h6CgK4ncX+tyep9XFY1e+XTBLJIWmuFMGbWqBLJ4fSKIQNQ==} + '@opentelemetry/instrumentation-cucumber@0.37.0': + resolution: {integrity: sha512-ezhn6D0DSUZkwLBGdfnr+PAENvB92AhbEH/dkcSLYB8dbQiw/NQ8y19jOn3E6MZTt0+FD1YyHtrJS2skDO4nDQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 - '@opentelemetry/instrumentation-dataloader@0.21.1': - resolution: {integrity: sha512-hNAm/bwGawLM8VDjKR0ZUDJ/D/qKR3s6lA5NV+btNaPVm2acqhPcT47l2uCVi+70lng2mywfQncor9v8/ykuyw==} + '@opentelemetry/instrumentation-dataloader@0.38.0': + resolution: {integrity: sha512-OmOVadK0m7sdlvMwbt1gb2iVUCyvVNDo3x5JLGgnKggLTJBgTcQxgMl3pAhFAMzWGo9URuMxuh3Bphy9Pb9nZw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-dns@0.47.0': - resolution: {integrity: sha512-775fOnewWkTF4iXMGKgwvOGqEmPrU1PZpXjjqvTrEErYBJe7Fz1WlEeUStHepyKOdld7Ghv7TOF/kE3QDctvrg==} + '@opentelemetry/instrumentation-dns@0.64.0': + resolution: {integrity: sha512-La6s9SdKgojZQVFD7AclQBYe3WioVe6zicJswM3QPPPHpCufJYnw8rO/G9o2Yl/OUeS7PYpzwHh4N6lexzbEcA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-express@0.52.0': - resolution: {integrity: sha512-W7pizN0Wh1/cbNhhTf7C62NpyYw7VfCFTYg0DYieSTrtPBT1vmoSZei19wfKLnrMsz3sHayCg0HxCVL2c+cz5w==} + '@opentelemetry/instrumentation-express@0.69.0': + resolution: {integrity: sha512-91pHMujQgDyhEQrdg8RriMBrRZ/qPaJ0Y2dopQ6lHjW5YjoeytWi8ruM//T6f5o0D95hnqRlv79Pel1lGPqaYg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-fastify@0.48.0': - resolution: {integrity: sha512-3zQlE/DoVfVH6/ycuTv7vtR/xib6WOa0aLFfslYcvE62z0htRu/ot8PV/zmMZfnzpTQj8S/4ULv36R6UIbpJIg==} + '@opentelemetry/instrumentation-fs@0.40.0': + resolution: {integrity: sha512-p39axaaYVKhnl5l4M+1aiXmxrAG2HuTti7DHxs2jDJRst828y5iwqUZLC1UWIKIhW9FfdV5gogXg+nRRhSc0EA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-fs@0.23.0': - resolution: {integrity: sha512-Puan+QopWHA/KNYvDfOZN6M/JtF6buXEyD934vrb8WhsX1/FuM7OtoMlQyIqAadnE8FqqDL4KDPiEfCQH6pQcQ==} + '@opentelemetry/instrumentation-generic-pool@0.64.0': + resolution: {integrity: sha512-wM939j8Ox5BBHoA0r/p9etdpyS3GcUf/sfrUx1dtZdqGKU4ZcBxLyPD8QntwFkSI9PHql+rRejTCA6Btktz8Kg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-generic-pool@0.47.0': - resolution: {integrity: sha512-UfHqf3zYK+CwDwEtTjaD12uUqGGTswZ7ofLBEdQ4sEJp9GHSSJMQ2hT3pgBxyKADzUdoxQAv/7NqvL42ZI+Qbw==} + '@opentelemetry/instrumentation-graphql@0.69.0': + resolution: {integrity: sha512-vyKzuiBoEulV1FjMSe4iiuwZedt+nNAuaSVOh/3WxjDIuGQ9WsH+0ohd9snhIY6guAjYOGjqvTiYLs6K+OTQQg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-graphql@0.51.0': - resolution: {integrity: sha512-LchkOu9X5DrXAnPI1+Z06h/EH/zC7D6sA86hhPrk3evLlsJTz0grPrkL/yUJM9Ty0CL/y2HSvmWQCjbJEz/ADg==} + '@opentelemetry/instrumentation-grpc@0.221.0': + resolution: {integrity: sha512-1U45172SiPWG1MPfrgLItIuXZO/RfJqt5sxsrdlKN1NRV0pUtv7lbpgB1nShwP/SGSKaAFkovbVg3a1hfy3mpQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-grpc@0.203.0': - resolution: {integrity: sha512-Qmjx2iwccHYRLoE4RFS46CvQE9JG9Pfeae4EPaNZjvIuJxb/pZa2R9VWzRlTehqQWpAvto/dGhtkw8Tv+o0LTg==} + '@opentelemetry/instrumentation-hapi@0.67.0': + resolution: {integrity: sha512-cIXIN4vZXm6aI4yz+4oUIRnkiAxCIpONrMhnGTI+ILKKEsIXP8Uselfr9663+TnisrgRLB7kKp+SoOuGJRHGtw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-hapi@0.50.0': - resolution: {integrity: sha512-5xGusXOFQXKacrZmDbpHQzqYD1gIkrMWuwvlrEPkYOsjUqGUjl1HbxCsn5Y9bUXOCgP1Lj6A4PcKt1UiJ2MujA==} + '@opentelemetry/instrumentation-host-metrics@0.4.0': + resolution: {integrity: sha512-jnFyX2sTn2B+9mjsL3qgAHzpxdaia4/FV2GSlf9QrpaiMi6O0M0lA9JZTsf4FTvuOwrIngCk+MeVXjsxgBXXyg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-http@0.203.0': - resolution: {integrity: sha512-y3uQAcCOAwnO6vEuNVocmpVzG3PER6/YZqbPbbffDdJ9te5NkHEkfSMNzlC3+v7KlE+WinPGc3N7MR30G1HY2g==} + '@opentelemetry/instrumentation-http@0.221.0': + resolution: {integrity: sha512-oIP91CPIANuYr09tGFElPFKAh6JUar+awJf1kBRYlaeo9b0gDwZHEB2zBfFlvdNFHm0wAVutMZODVi5smKT30g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-ioredis@0.51.0': - resolution: {integrity: sha512-9IUws0XWCb80NovS+17eONXsw1ZJbHwYYMXiwsfR9TSurkLV5UNbRSKb9URHO+K+pIJILy9wCxvyiOneMr91Ig==} + '@opentelemetry/instrumentation-ioredis@0.69.0': + resolution: {integrity: sha512-I9sZtxXWZ1tRXtRNTEVxpokGtXy6RL1SZhtPVh7zxH78t8ar71V5Dx4bnQiUjKTDzItpC73krD8c0/cEWA9oLg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-kafkajs@0.13.0': - resolution: {integrity: sha512-FPQyJsREOaGH64hcxlzTsIEQC4DYANgTwHjiB7z9lldmvua1LRMVn3/FfBlzXoqF179B0VGYviz6rn75E9wsDw==} + '@opentelemetry/instrumentation-kafkajs@0.30.0': + resolution: {integrity: sha512-/p/D4etxJpJGB0VrS+kqF8WfVAMFWf5ybhY0mjzIEd/d/T68+nxTWJaI5MJXFiyOnBUFuMlun12VJt+QJDCSZA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-knex@0.48.0': - resolution: {integrity: sha512-V5wuaBPv/lwGxuHjC6Na2JFRjtPgstw19jTFl1B1b6zvaX8zVDYUDaR5hL7glnQtUSCMktPttQsgK4dhXpddcA==} + '@opentelemetry/instrumentation-knex@0.65.0': + resolution: {integrity: sha512-rJTT12VlDnL6wOWfxnBvkTUIzW2ju+7nqlToMy1tlqL0j6ohlVPxryMCS5h6UqE3CFpq7HtHqVObQHZgrA37KA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-koa@0.51.0': - resolution: {integrity: sha512-XNLWeMTMG1/EkQBbgPYzCeBD0cwOrfnn8ao4hWgLv0fNCFQu1kCsJYygz2cvKuCs340RlnG4i321hX7R8gj3Rg==} + '@opentelemetry/instrumentation-koa@0.69.0': + resolution: {integrity: sha512-fxuA8jFOdqQzJV9Sitd0dk+zns7RQCFe19ia3LHex5oLiQPaaQovBv37jndX/zAZw6EBORATePHE8OQUwraPCQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + + '@opentelemetry/instrumentation-lru-memoizer@0.65.0': + resolution: {integrity: sha512-s2KisLZ82iDvCF2QbsV1k1wrz3DMSBP9OiMfmNn5oSyaNT7jcNphR4uxr7WjwH+ssucuvhKWqKzJ2vdx7KRMVA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-lru-memoizer@0.48.0': - resolution: {integrity: sha512-KUW29wfMlTPX1wFz+NNrmE7IzN7NWZDrmFWHM/VJcmFEuQGnnBuTIdsP55CnBDxKgQ/qqYFp4udQFNtjeFosPw==} + '@opentelemetry/instrumentation-memcached@0.64.0': + resolution: {integrity: sha512-ek34tp7Qjci4CLahXybJ3aaixU1d2j28X5JSXSXbp6/rIiFGjMCAXJWw3FeiYmA82D/gV/wzPhL7r7m/p4gUzw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-memcached@0.47.0': - resolution: {integrity: sha512-vXDs/l4hlWy1IepPG1S6aYiIZn+tZDI24kAzwKKJmR2QEJRL84PojmALAEJGazIOLl/VdcCPZdMb0U2K0VzojA==} + '@opentelemetry/instrumentation-mongodb@0.74.0': + resolution: {integrity: sha512-GRnHu69YLQUYgguuYkKi6wpizMY4r7gLC08rSq8cg41p6t7+1YIy5nXoGC61NA7KCZUE9jbcDnzd45i32IblZg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mongodb@0.56.0': - resolution: {integrity: sha512-YG5IXUUmxX3Md2buVMvxm9NWlKADrnavI36hbJsihqqvBGsWnIfguf0rUP5Srr0pfPqhQjUP+agLMsvu0GmUpA==} + '@opentelemetry/instrumentation-mongoose@0.67.0': + resolution: {integrity: sha512-iEBgNrychD36qI16X/V8WZb2JabjQPE+pyrkLU320ApZyhGVsYU9LH3Nqt4Mkg1nFsa9qWhRQrCfhoANCgT6EA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mongoose@0.50.0': - resolution: {integrity: sha512-Am8pk1Ct951r4qCiqkBcGmPIgGhoDiFcRtqPSLbJrUZqEPUsigjtMjoWDRLG1Ki1NHgOF7D0H7d+suWz1AAizw==} + '@opentelemetry/instrumentation-mysql2@0.67.0': + resolution: {integrity: sha512-AmviR7l0xMxhC83scY3u+NkkT6blhD/xK9tPi9nYtjNG1gwPtMgZjYOa3f9lGOwpXs/EwN7wiyAgxiO4KTcENA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mysql2@0.50.0': - resolution: {integrity: sha512-PoOMpmq73rOIE3nlTNLf3B1SyNYGsp7QXHYKmeTZZnJ2Ou7/fdURuOhWOI0e6QZ5gSem18IR1sJi6GOULBQJ9g==} + '@opentelemetry/instrumentation-mysql@0.67.0': + resolution: {integrity: sha512-G4aRrVKcd2Aodqi7WzRZ3LQJNKrM8BpsXEVMHrOb9s8Lg0jZXNvlLY0NWL1yVJrjnqI/unwEsp2aVHkVImPMeA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mysql@0.49.0': - resolution: {integrity: sha512-QU9IUNqNsrlfE3dJkZnFHqLjlndiU39ll/YAAEvWE40sGOCi9AtOF6rmEGzJ1IswoZ3oyePV7q2MP8SrhJfVAA==} + '@opentelemetry/instrumentation-nestjs-core@0.67.0': + resolution: {integrity: sha512-lXb7pjobd2i/9Gmihf9wrOM0MgnDYBxOJq7uWEhZOqULodNFLyPCRUnWxSIbPQdUzlU36QtHjuAeaEBUJnqXkA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-nestjs-core@0.49.0': - resolution: {integrity: sha512-1R/JFwdmZIk3T/cPOCkVvFQeKYzbbUvDxVH3ShXamUwBlGkdEu5QJitlRMyVNZaHkKZKWgYrBarGQsqcboYgaw==} + '@opentelemetry/instrumentation-net@0.65.0': + resolution: {integrity: sha512-W82H8UvaSrWynpI510CNJbq2Aq6L4/zuR/dAvoCZVYeRiChi0LHMI8i3rPe3Tmau2WBwE0jimaWgOs0GCfIHbQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-net@0.47.0': - resolution: {integrity: sha512-csoJ++Njpf7C09JH+0HNGenuNbDZBqO1rFhMRo6s0rAmJwNh9zY3M/urzptmKlqbKnf4eH0s+CKHy/+M8fbFsQ==} + '@opentelemetry/instrumentation-openai@0.19.0': + resolution: {integrity: sha512-zHz7m/aUMDyAap7UMzaaxDkbmxEyUOfMBfh+7KICNwTBmIOypMnuUWwXWAfIJLgl+2dnZlNzxZRknULeS4YIhg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-oracledb@0.29.0': - resolution: {integrity: sha512-2aHLiJdkyiUbooIUm7FaZf+O4jyqEl+RfFpgud1dxT87QeeYM216wi+xaMNzsb5yKtRBqbA3qeHBCyenYrOZwA==} + '@opentelemetry/instrumentation-oracledb@0.46.0': + resolution: {integrity: sha512-nqxQvbp7HvsVPyDdgiZADPQX6B6ZUtLfm+XPuJHtQ3anxIcqU6qhJlrDIEM2LrZMShqf7bs84RHfDt2rgsp7hg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-pg@0.56.1': - resolution: {integrity: sha512-0/PiHDPVaLdcXNw6Gqb3JBdMxComMEwh444X8glwiynJKJHRTR49+l2cqJfoOVzB8Sl1XRl3Yaqw6aDi3s8e9w==} + '@opentelemetry/instrumentation-pg@0.73.0': + resolution: {integrity: sha512-yf3tBVwLHB9cZNNPSToNrthx36ouPe4FctFxy7ya6vSJ6gaiKjNfA/IgFFeuBpZflEQhy6aesPqzZo8ZjFkvNg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-pino@0.50.1': - resolution: {integrity: sha512-pBbvuWiHA9iAumAuQ0SKYOXK7NRlbnVTf/qBV0nMdRnxBPrc/GZTbh0f7Y59gZfYsbCLhXLL1oRTEnS+PwS3CA==} + '@opentelemetry/instrumentation-pino@0.67.0': + resolution: {integrity: sha512-Hb6phi2x1bq23OIiesj4imQvXs9Y5MMLtpgXH9hOuMm9LpBYz2cxPNgpgZ/XATuRclP1eRPoSl399o5XKwfoIA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-redis@0.52.0': - resolution: {integrity: sha512-R8Y7cCZlJ2Vl31S2i7bl5SqyC/aul54ski4wCFip/Tp9WGtLK1xVATi2rwy2wkc8ZCtjdEe9eEVR+QFG6gGZxg==} + '@opentelemetry/instrumentation-redis@0.69.0': + resolution: {integrity: sha512-lyCIEW89cYhMwaUSMBzsKHdwH2wOoqmuwXOARJneo9UL55govLIUCbYYAJ457oM8kdKADymlY4+SUW0DKQeIHw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-restify@0.49.0': - resolution: {integrity: sha512-tsGZZhS4mVZH7omYxw5jpsrD3LhWizqWc0PYtAnzpFUvL5ZINHE+cm57bssTQ2AK/GtZMxu9LktwCvIIf3dSmw==} + '@opentelemetry/instrumentation-restify@0.66.0': + resolution: {integrity: sha512-9zbnL0ML2jFgJmmG1XPQTqwopCogC8eAtUQ0SXvYb+Ux2yuOBOvSg9XvRk/hcQf6WsRMll47cELCMC+IaI9I+g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-router@0.48.0': - resolution: {integrity: sha512-Wixrc8CchuJojXpaS/dCQjFOMc+3OEil1H21G+WLYQb8PcKt5kzW9zDBT19nyjjQOx/D/uHPfgbrT+Dc7cfJ9w==} + '@opentelemetry/instrumentation-router@0.65.0': + resolution: {integrity: sha512-ti9tDLFLhLoev5U/cGeQpFTlOjFFwrFbieZmwTFql9z8EijXDzFE7a3+3mgnxGl9CZR0luKCwFD/o51NPU+Ngg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-runtime-node@0.17.1': - resolution: {integrity: sha512-c1FlAk+bB2uF9a8YneGmNPTl7c/xVaan4mmWvbkWcOmH/ipKqR1LaKUlz/BMzLrJLjho1EJlG2NrS2w2Arg+nw==} + '@opentelemetry/instrumentation-runtime-node@0.34.0': + resolution: {integrity: sha512-Yb3PcmuK/iIOWY49GSEcSGl7fR4r6UqhZnuy5EWvFaqKqqs9SYnQeyQUEAbnBnSougRpwFBDbdN1SSGcvMhbtQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-socket.io@0.50.0': - resolution: {integrity: sha512-6JN6lnKN9ZuZtZdMQIR+no1qHzQvXSZUsNe3sSWMgqmNRyEXuDUWBIyKKeG0oHRHtR4xE4QhJyD4D5kKRPWZFA==} + '@opentelemetry/instrumentation-socket.io@0.68.0': + resolution: {integrity: sha512-Bhd0KApVBYV4WQMZZbKRYfvev7SudvCtSn6b36uyUbKowOMEoGpnVoIvm0rlrrBR0KmkcV3Y37SngCGUrTm3lg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-tedious@0.22.0': - resolution: {integrity: sha512-XrrNSUCyEjH1ax9t+Uo6lv0S2FCCykcF7hSxBMxKf7Xn0bPRxD3KyFUZy25aQXzbbbUHhtdxj3r2h88SfEM3aA==} + '@opentelemetry/instrumentation-tedious@0.40.0': + resolution: {integrity: sha512-zTNNxs+KUJf1J+lHzeTDxAIZdVJYvQ8mvGUfyiWcVFgVdl7+4XV+wOBMSd1tZcRRlopfcVODDCOVMx/N7+zvcA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-undici@0.14.0': - resolution: {integrity: sha512-2HN+7ztxAReXuxzrtA3WboAKlfP5OsPA57KQn2AdYZbJ3zeRPcLXyW4uO/jpLE6PLm0QRtmeGCmfYpqRlwgSwg==} + '@opentelemetry/instrumentation-undici@0.31.0': + resolution: {integrity: sha512-qunCfgSFV+bjRdAYkWIjVX38jIN/Xj80CiERXXdzYAmdigCFvJPB3AY3j43bjJlkhgbJJSCGdbvQUSut8QIiyQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.7.0 - '@opentelemetry/instrumentation-winston@0.48.1': - resolution: {integrity: sha512-XyOuVwdziirHHYlsw+BWrvdI/ymjwnexupKA787zQQ+D5upaE/tseZxjfQa7+t4+FdVLxHICaMTmkSD4yZHpzQ==} + '@opentelemetry/instrumentation-winston@0.65.0': + resolution: {integrity: sha512-hWSPnS530deRa+ttzY+QiGmgsK7aQHpqxbQRm56yO1j4qnIXuYYHaoSJ8/4lLOEcXB+hZs0mAAJ6QiMl1aaiGA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.203.0': - resolution: {integrity: sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==} + '@opentelemetry/instrumentation@0.221.0': + resolution: {integrity: sha512-cCk80Z/iRDf/5gfsKMB4f74LqVA5yKETB/9ojPzVW/6/f70iu89nJvGxsFCxx4XfSohaOofkU19kiYm84AiAlw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-exporter-base@0.203.0': - resolution: {integrity: sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==} + '@opentelemetry/otlp-exporter-base@0.221.0': + resolution: {integrity: sha512-UFPIq80OH3Ns/oPFHRj14d4DTOxUo+MUFU8hUiCq5jTqFhdeJnfVSANHT+xp92409cA+oxzvlZCe6NM1wvCuBA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-grpc-exporter-base@0.203.0': - resolution: {integrity: sha512-te0Ze1ueJF+N/UOFl5jElJW4U0pZXQ8QklgSfJ2linHN0JJsuaHG8IabEUi2iqxY8ZBDlSiz1Trfv5JcjWWWwQ==} + '@opentelemetry/otlp-grpc-exporter-base@0.221.0': + resolution: {integrity: sha512-rQDmNgyiGCTrescjnzH2ntVyUKVIq6I2UjuK8+stT/Xg0ZOT71FVJqwjFdspQl6Yol/Yqsut9bDo+ame8oTmDQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-transformer@0.203.0': - resolution: {integrity: sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==} + '@opentelemetry/otlp-transformer@0.221.0': + resolution: {integrity: sha512-lg6lkOU08Az23jVcn/0Els9HP+V8PnR4Km6p0KgpTggS0n/WuhnmY64rSh83Of9iR9nD+dpWr6adlcX8KzAwjg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/propagator-b3@2.0.1': - resolution: {integrity: sha512-Hc09CaQ8Tf5AGLmf449H726uRoBNGPBL4bjr7AnnUpzWMvhdn61F78z9qb6IqB737TffBsokGAK1XykFEZ1igw==} + '@opentelemetry/propagator-aws-xray@2.2.0': + resolution: {integrity: sha512-Yjvt2EjL+tfpkVOdKbhTPgpM4SIAez9nG6Q/QjQ3yfcJcjIWp59ph70SLfvmkSL6++3DCnuBG3iWcB18PwWavQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/propagator-jaeger@2.0.1': - resolution: {integrity: sha512-7PMdPBmGVH2eQNb/AtSJizQNgeNTfh6jQFqys6lfhd6P4r+m/nTh3gKPPpaCXVdRQ+z93vfKk+4UGty390283w==} + '@opentelemetry/propagator-b3@2.10.0': + resolution: {integrity: sha512-GnA5B24H+1w8BO21J0q+IWNB0z1v+AGbcquTdIt/dufibhnhgxaA8YKvz0I3akRZhB1jHT+/tlzK+qlAjEDybQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/redis-common@0.38.2': - resolution: {integrity: sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==} + '@opentelemetry/propagator-jaeger@2.10.0': + resolution: {integrity: sha512-yw/IX8DL470dSMZJoE82ScfYGp7JWZ/G8kFJo35ZILUVTB2jFPTOaioN+8s09pH0RHsWNhweVZb+ZnjJJpCChg==} engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resource-detector-alibaba-cloud@0.31.9': - resolution: {integrity: sha512-V+HbpICyzmJoQHYpiN0xRlj7QqeR9pPo+JZiZztV77L2MdlUCa/Cq7h0gdFNIKc0P9u9rYYYW21oaqdhhC5LZg==} + '@opentelemetry/redis-common@0.38.3': + resolution: {integrity: sha512-VCghU1JYs/4gP6Gqf/xro9MEsZ7LrMv2uONVsaESKL38ZOB9BqnI98FfS23wjMnHlpuE+TTaWSoAVNpTwYXzjw==} engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - '@opentelemetry/resource-detector-aws@2.6.0': - resolution: {integrity: sha512-atZ9/HNXh9ZJuMZUH2TPl89imFZBaoiU0Mksa70ysVhYRzhk3hfJyiu+eETjZ7NhGjBPrd3sfVYEq/St/7+o3g==} + '@opentelemetry/resource-detector-alibaba-cloud@0.36.0': + resolution: {integrity: sha512-s75zJV1ShpYL5nk2cODfZY05Haw2hGxcfEFMu3ymvh2QU3HrhXaCW+rmNkhXhRrO8YophMFTyVdb7iCDleC/JQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 - '@opentelemetry/resource-detector-azure@0.10.0': - resolution: {integrity: sha512-5cNAiyPBg53Uxe/CW7hsCq8HiKNAUGH+gi65TtgpzSR9bhJG4AEbuZhbJDFwe97tn2ifAD1JTkbc/OFuaaFWbA==} + '@opentelemetry/resource-detector-aws@2.21.0': + resolution: {integrity: sha512-Veavy+khoywR+Hv065SU5jucFTGTiW1KXo39CsJ+8wqdYYz8jiRJPnQ20Kd+X9HbV2+Abb0l5CrJIdxK1ZOqBg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 - '@opentelemetry/resource-detector-container@0.7.9': - resolution: {integrity: sha512-BiS14kCylLzh/mayN/sjnOdhnpfgiekaEsIzaL29MErfQR0mFCZjAE2uu8jMjShva9bSDFs65ouuAFft+vBthg==} + '@opentelemetry/resource-detector-azure@0.29.0': + resolution: {integrity: sha512-lWm0vjjlQMoc4Xvvd+dW/OZWT/SI4w+cIN7kbm8KimIZCr1EpAyvyQ7WEOrGoBoXCpQCrsZ18uKTooDgiBCGIw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 - '@opentelemetry/resource-detector-gcp@0.37.0': - resolution: {integrity: sha512-LGpJBECIMsVKhiulb4nxUw++m1oF4EiDDPmFGW2aqYaAF0oUvJNv8Z/55CAzcZ7SxvlTgUwzewXDBsuCup7iqw==} + '@opentelemetry/resource-detector-container@0.8.12': + resolution: {integrity: sha512-EJRFfIY26whY0w5RDxMRXlfBDgDS001JYMHuOVuDBBsRrV4MBqoVajR9B0L9Vy728+w/HNVnSQkpJFacFr+klg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 - '@opentelemetry/resources@2.0.1': - resolution: {integrity: sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==} + '@opentelemetry/resource-detector-gcp@0.56.0': + resolution: {integrity: sha512-H8yNeqTsuapbXs6MLZTtelfUCk+5D8jD3+KosCJaXOyx5gl3EWWvs70HbNXTUO4VYLxccySFYJYVCd8YMM0NJw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' + '@opentelemetry/api': ^1.0.0 '@opentelemetry/resources@2.1.0': resolution: {integrity: sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==} @@ -2744,64 +2728,72 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-logs@0.203.0': - resolution: {integrity: sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==} + '@opentelemetry/resources@2.10.0': + resolution: {integrity: sha512-q6MMm2zhggzsHVNbabYwut+a6nbuQQe3URUoxaojM/8K1IBfwwPzvxIjNi2/lI1TFe+fMHMW9MWhrtDLEXEnkA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - '@opentelemetry/api': '>=1.4.0 <1.10.0' + '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-metrics@2.0.1': - resolution: {integrity: sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==} + '@opentelemetry/sdk-logs@0.221.0': + resolution: {integrity: sha512-FaDcazjyMp7TZZZAsqbo4IkovP0UegoCu0EBkiNt+qCqvUf7FPAsfcrZ3+ZEkKgXZ/jHafop+JoGPDk3A0SmLg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - '@opentelemetry/api': '>=1.9.0 <1.10.0' + '@opentelemetry/api': '>=1.4.0 <1.10.0' - '@opentelemetry/sdk-metrics@2.1.0': - resolution: {integrity: sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==} + '@opentelemetry/sdk-metrics@2.10.0': + resolution: {integrity: sha512-t6r1VSvXNtSDnPXU1FbZeetJb7yyovHmgu0wRSoftxtE0g2rSNhQZQUy69sRUCL+iioJpX8SN/S6wq6ZtvLySQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.9.0 <1.10.0' - '@opentelemetry/sdk-node@0.203.0': - resolution: {integrity: sha512-zRMvrZGhGVMvAbbjiNQW3eKzW/073dlrSiAKPVWmkoQzah9wfynpVPeL55f9fVIm0GaBxTLcPeukWGy0/Wj7KQ==} + '@opentelemetry/sdk-node@0.221.0': + resolution: {integrity: sha512-UbYuvtBrQQB5Prsh9KOKy4kxzexFxfMs5MkteHeWMoswsEB7kiNhyUVkAOFW/qsEzNHtrkgyghrD2ilZJa+5YA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.0.1': - resolution: {integrity: sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==} + '@opentelemetry/sdk-trace-base@2.1.0': + resolution: {integrity: sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.1.0': - resolution: {integrity: sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==} + '@opentelemetry/sdk-trace-base@2.10.0': + resolution: {integrity: sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-node@2.0.1': - resolution: {integrity: sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==} + '@opentelemetry/sdk-trace-node@2.10.0': + resolution: {integrity: sha512-GZK/G6oZyBLGlH1pUgeDch7D91KoHd2uotUGIkWCPi9GI5T9X0p4L7nNAMDR1BQjkRYoDqo+ddfVx9t5Uhys+Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-node@2.1.0': - resolution: {integrity: sha512-SvVlBFc/jI96u/mmlKm86n9BbTCbQ35nsPoOohqJX6DXH92K0kTe73zGY5r8xoI1QkjR9PizszVJLzMC966y9Q==} + '@opentelemetry/sdk-trace@2.10.0': + resolution: {integrity: sha512-MfQGq3GRmTh5fM/y+OjaO0vj6+luCB1XO2gfXCalKCfgKw0eHL++sm75DNweC6ohlp+aFvACqeE0fYayqdRaoQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/api': '>=1.3.0 <1.10.0' '@opentelemetry/semantic-conventions@1.37.0': resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@opentelemetry/sql-common@0.41.2': - resolution: {integrity: sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==} + '@opentelemetry/semantic-conventions@1.43.0': + resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==} + engines: {node: '>=14'} + + '@opentelemetry/sql-common@0.42.0': + resolution: {integrity: sha512-nwUwUU+8O8a4bnLqk6CodWeegGMEANgC94KTAhXcpGWLrW/2/hek/0ajNbjXnSOoNuCX+nteUPs46HFHhou9Xw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.1.0 + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -2969,6 +2961,16 @@ packages: peerDependencies: '@tiptap/core': ^2.7.0 + '@tiptap/extension-subscript@2.27.2': + resolution: {integrity: sha512-x2Oz7hrI4KvzzB9pWChFRm6JnKdYAUQDyrlSROngtzXT7VpNQNoD5s8OlICzDeNsaRKzhR8omIz2z17S1VB48g==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-superscript@2.27.2': + resolution: {integrity: sha512-VTGJDuNqdesibSVW94Q71VaGVGr/bwBppdaNLn7k6beOegALfIH7ncArlkD/eihOlJ2qaWiT7FoWNLTb/Fdv1w==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-table-cell@2.26.3': resolution: {integrity: sha512-m/uZSeXuRAJaLedq0MOu9ZGibh4kkovXX0i5Oj6K9lT+TtBLQBNCSABQeOCe2FFPXhpWRpnhZrqhJgdo/n9BSg==} peerDependencies: @@ -3061,8 +3063,8 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@types/aws-lambda@8.10.152': - resolution: {integrity: sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw==} + '@types/aws-lambda@8.10.162': + resolution: {integrity: sha512-Fn658grtLOci1oxi1391vvDWJRKNGWRSqfxRkmN/Iy3c0tQH1USMKEXcPYHLvope+ZgTFocx9FRQJx1muBL6qw==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -3133,24 +3135,21 @@ packages: '@types/mysql@2.15.27': resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==} - '@types/node@22.18.10': - resolution: {integrity: sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==} + '@types/node@24.13.3': + resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} '@types/oracledb@6.5.2': resolution: {integrity: sha512-kK1eBS/Adeyis+3OlBDMeQQuasIDLUYXsi2T15ccNJ0iyUpQ4xDF7svFu3+bGVrI0CMBUclPciz+lsQR3JX3TQ==} - '@types/pg-pool@2.0.6': - resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} + '@types/pg-pool@2.0.7': + resolution: {integrity: sha512-U4CwmGVQcbEuqpyju8/ptOKg6gEC+Tqsvj2xS9o1g71bUh8twxnC6ZL5rZKCsGN0iyH0CwgUyc9VR5owNQF9Ng==} - '@types/pg@8.15.5': - resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} + '@types/pg@8.15.6': + resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==} '@types/pug@2.0.10': resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - '@types/semver@7.7.1': - resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/snappyjs@0.7.1': resolution: {integrity: sha512-OxjzJ6cQZstysMh6PEwZWmK9qlKZyezHJKOkcUkZDooSFuog2votUEKkxMaTq51UQF3cJkXKQ+XGlj4FSl8JQQ==} @@ -3181,71 +3180,64 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@6.21.0': - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/eslint-plugin@8.67.0': + resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser': ^8.67.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@6.21.0': - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/parser@8.67.0': + resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@6.21.0': - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/type-utils@6.21.0': - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/project-service@8.67.0': + resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@6.21.0': - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@8.67.0': + resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@6.21.0': - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/tsconfig-utils@8.67.0': + resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@6.21.0': - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/type-utils@8.67.0': + resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@6.21.0': - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/types@8.67.0': + resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@typescript-eslint/typescript-estree@8.67.0': + resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + '@typescript-eslint/utils@8.67.0': + resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - acorn: ^8 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.67.0': + resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -3265,8 +3257,8 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} @@ -3276,6 +3268,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.3.0: + resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -3284,6 +3280,10 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -3372,6 +3372,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + baseline-browser-mapping@2.8.16: resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==} hasBin: true @@ -3389,6 +3393,10 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -3412,9 +3420,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -3465,6 +3470,9 @@ packages: cjs-module-lexer@1.4.3: resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + cjs-module-lexer@2.2.1: + resolution: {integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -3545,6 +3553,10 @@ packages: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -3630,10 +3642,6 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -3651,6 +3659,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + electron-to-chromium@1.5.237: resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} @@ -3661,9 +3672,16 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + enhanced-resolve@5.24.5: + resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} + engines: {node: '>=10.13.0'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -3691,6 +3709,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -3745,26 +3766,12 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-standard-with-typescript@40.0.0: - resolution: {integrity: sha512-GXUJcwIXiTQaS3H4etv8a1lejVVdZYaxZNz3g7vt6GoJosQqMTurbmSC4FVGyHiGT/d1TjFr3+47A3xsHhsG+Q==} - deprecated: Please use eslint-config-love, instead. + eslint-config-love@155.0.0: + resolution: {integrity: sha512-3FNiSSfnR5ypBNALxcVXVMQIrEJV4KouUxdeV/8fMT74wCuMa/DL9vgDOneM7LQMn05U8DsqfKQ0uO0MCigxLw==} peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.4.0 - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 + eslint: ^9.35.0 typescript: '*' - eslint-config-standard@17.1.0: - resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 - eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -3777,17 +3784,11 @@ packages: eslint: optional: true - eslint-plugin-es@3.0.1: - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '>=4.19.1' - - eslint-plugin-es@4.1.0: - resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' + eslint: '>=8' eslint-plugin-import@2.32.0: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} @@ -3795,69 +3796,64 @@ packages: peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - eslint-plugin-n@15.7.0: - resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} - engines: {node: '>=12.22.0'} + eslint-plugin-n@18.3.0: + resolution: {integrity: sha512-cPVguuDe6DrIPb/qUXHf8P89MaVTUmiYWwpt5gX5AILsvRIiZAxMFXcFR6QHYBksqKJpjfUBlL/RleCJUWcD7w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-node@11.1.0: - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' + eslint: '>=8.57.1' + ts-declaration-location: ^1.0.6 + typescript: '>=5.0.0' + peerDependenciesMeta: + ts-declaration-location: + optional: true + typescript: + optional: true - eslint-plugin-promise@6.6.0: - resolution: {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-plugin-promise@7.3.0: + resolution: {integrity: sha512-6uGiOR0INuujr6PEQmeSSP7GbIMJ/ebEXXiEzb/nOj68LknH5Pxzb/AbZivmr6VE6TkTE8rTjRK9zhKpK6HsRA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-svelte@2.46.1: - resolution: {integrity: sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==} - engines: {node: ^14.17.0 || >=16.0.0} + eslint-plugin-svelte@3.23.0: + resolution: {integrity: sha512-n9jRklDqy0+W834568a4ZIZTK7DHXxvvHHxxGP8nNq7N//pOZMubttskHOquyGgfTR4Z05q2NdGNlsTpIEA48w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + eslint: ^8.57.1 || ^9.0.0 || ^10.0.0 svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: svelte: optional: true - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - - eslint-utils@3.0.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.5: + resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -3921,12 +3917,25 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} file-stream-rotator@0.6.1: resolution: {integrity: sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==} @@ -3943,9 +3952,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} @@ -3957,6 +3966,14 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + forwarded-parse@2.1.2: resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} @@ -3982,13 +3999,13 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gaxios@6.7.1: - resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} - engines: {node: '>=14'} + gaxios@7.1.3: + resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==} + engines: {node: '>=18'} - gcp-metadata@6.1.1: - resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} - engines: {node: '>=14'} + gcp-metadata@8.1.4: + resolution: {integrity: sha512-iJ9KMsiu+xKtNRX0PmGLSaIU3bUBAyzWTyqKemKPzNPsmmsBCQYmlNg+brEbES7IHSXtdVwzBPzx1vz3FAaipw==} + engines: {node: '>=18'} generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} @@ -4022,6 +4039,9 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -4030,13 +4050,26 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} @@ -4046,8 +4079,11 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - google-logging-utils@0.0.2: - resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + google-logging-utils@1.1.3: + resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} engines: {node: '>=14'} gopd@1.2.0: @@ -4057,9 +4093,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - handlebars@4.7.9: resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} engines: {node: '>=0.4.7'} @@ -4125,12 +4158,17 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + engines: {node: '>= 4'} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-in-the-middle@1.15.0: - resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==} + import-in-the-middle@3.3.3: + resolution: {integrity: sha512-AiohS3H80sXO6owEltjGX+glb7qXaDhBoJb9XcQVH4UI207xu/bDLUcadVKp7Qe576reg9yr/PXZjV5qx8gfbA==} + engines: {node: '>=18'} import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} @@ -4234,10 +4272,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -4317,6 +4351,9 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4478,8 +4515,8 @@ packages: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} hasBin: true jsdom@26.1.0: @@ -4534,8 +4571,8 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - known-css-properties@0.35.0: - resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} + known-css-properties@0.37.0: + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} @@ -4648,16 +4685,27 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -4689,14 +4737,14 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} node-gyp-build-optional-packages@5.2.2: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} @@ -4788,6 +4836,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4814,6 +4865,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -4843,6 +4898,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -4867,11 +4926,11 @@ packages: ts-node: optional: true - postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} peerDependencies: - postcss: ^8.3.3 + postcss: ^8.4.31 postcss-scss@4.0.9: resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} @@ -4879,8 +4938,8 @@ packages: peerDependencies: postcss: ^8.4.29 - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + postcss-selector-parser@7.1.5: + resolution: {integrity: sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==} engines: {node: '>=4'} postcss@8.5.6: @@ -5037,17 +5096,13 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - require-in-the-middle@7.5.2: - resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} - engines: {node: '>=8.6.0'} + require-in-the-middle@8.0.1: + resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} + engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} @@ -5061,6 +5116,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve.exports@2.0.3: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} @@ -5079,9 +5137,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true rope-sequence@1.3.4: @@ -5173,6 +5230,10 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -5220,6 +5281,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -5239,6 +5304,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -5271,18 +5340,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-eslint-parser@0.33.1: - resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 - peerDependenciesMeta: - svelte: - optional: true - - svelte-eslint-parser@0.43.0: - resolution: {integrity: sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + svelte-eslint-parser@1.8.1: + resolution: {integrity: sha512-5zgKBqAf6V8Jyrmr1jViksyG4NKT8NheYwkdxRaMRDAqpGWi9wR8ktcGrAZbfMn/PHUp1BWzAp0cYQECkWuAMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.34.5} peerDependencies: svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: @@ -5339,6 +5399,16 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + systeminformation@5.33.1: + resolution: {integrity: sha512-DEN6ICHk3Tk0Uf/hrAHh7xlt7iL5CJFBtPZinA0H62DrGG/KPKqq/Nzj6lCXPS4Ay/sf/14zNnk9LpqKzBIc+w==} + engines: {node: '>=10.0.0'} + os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] + hasBin: true + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -5346,8 +5416,9 @@ packages: text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} @@ -5370,9 +5441,6 @@ packages: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -5381,11 +5449,11 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-jest@29.4.5: resolution: {integrity: sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==} @@ -5442,10 +5510,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -5470,6 +5534,13 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typescript-eslint@8.67.0: + resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -5487,8 +5558,8 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -5510,10 +5581,6 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -5531,8 +5598,9 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} @@ -5551,9 +5619,6 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -5600,6 +5665,10 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -5607,8 +5676,8 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + ws@8.21.3: + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5657,6 +5726,11 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -5995,28 +6069,64 @@ snapshots: '@esbuild/win32-x64@0.25.11': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': + '@eslint-community/eslint-plugin-eslint-comments@4.7.2(eslint@9.39.5)': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.39.5 + ignore: 7.0.6 + + '@eslint-community/eslint-utils@4.10.1(eslint@9.39.5)': dependencies: - eslint: 8.57.1 + eslint: 9.39.5 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.5)': + dependencies: + eslint: 9.39.5 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/eslintrc@2.1.4': + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': dependencies: - ajv: 6.12.6 + '@eslint/object-schema': 2.1.7 debug: 4.4.3 - espree: 9.6.1 - globals: 13.24.0 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.6': + dependencies: + ajv: 6.15.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 + js-yaml: 4.3.1 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} + '@eslint/js@9.39.5': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 '@formatjs/ecma402-abstract@2.3.6': dependencies: @@ -6044,7 +6154,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@grpc/grpc-js@1.14.0': + '@grpc/grpc-js@1.14.4': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -6056,29 +6166,29 @@ snapshots: protobufjs: 7.5.5 yargs: 17.7.2 - '@hcengineering/platform-rig@0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3))': + '@hcengineering/platform-rig@0.7.21(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3))': dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) + '@typescript-eslint/parser': 8.67.0(eslint@9.39.5)(typescript@5.9.3) esbuild: 0.25.11 esbuild-plugin-copy: 2.1.1(esbuild@0.25.11) esbuild-svelte: 0.9.3(esbuild@0.25.11)(svelte@4.2.20) - eslint: 8.57.1 - eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-import: 2.32.0(eslint@8.57.1) - eslint-plugin-n: 15.7.0(eslint@8.57.1) - eslint-plugin-promise: 6.6.0(eslint@8.57.1) - eslint-plugin-svelte: 2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + eslint: 9.39.5 + eslint-config-love: 155.0.0(eslint@9.39.5)(typescript@5.9.3) + eslint-plugin-n: 18.3.0(eslint@9.39.5)(typescript@5.9.3) + eslint-plugin-promise: 7.3.0(eslint@9.39.5) + eslint-plugin-svelte: 3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) prettier: 3.6.2 prettier-plugin-svelte: 3.4.0(prettier@3.6.2)(svelte@4.2.20) svelte: 4.2.20 - svelte-eslint-parser: 0.33.1(svelte@4.2.20) - svelte-preprocess: 5.1.4(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(svelte@4.2.20)(typescript@5.9.3) + svelte-eslint-parser: 1.8.1(svelte@4.2.20) + svelte-preprocess: 5.1.4(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(svelte@4.2.20)(typescript@5.9.3) svelte2tsx: 0.7.45(svelte@4.2.20)(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - '@babel/core' - coffeescript + - jiti - less - postcss - postcss-load-config @@ -6087,19 +6197,33 @@ snapshots: - stylus - sugarss - supports-color + - ts-declaration-location - ts-node - '@humanwhocodes/config-array@0.13.0': + '@humanfs/core@0.19.2': dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.3 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.4.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 '@istanbuljs/load-nyc-config@1.1.0': dependencies: @@ -6114,27 +6238,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -6161,7 +6285,7 @@ snapshots: '@jest/fake-timers': 30.2.0 '@jest/types': 30.2.0 '@types/jsdom': 21.1.7 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-mock: 30.2.0 jest-util: 30.2.0 jsdom: 26.1.0 @@ -6170,14 +6294,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-mock: 29.7.0 '@jest/environment@30.2.0': dependencies: '@jest/fake-timers': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-mock: 30.2.0 '@jest/expect-utils@29.7.0': @@ -6195,7 +6319,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -6204,7 +6328,7 @@ snapshots: dependencies: '@jest/types': 30.2.0 '@sinonjs/fake-timers': 13.0.5 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-message-util: 30.2.0 jest-mock: 30.2.0 jest-util: 30.2.0 @@ -6220,7 +6344,7 @@ snapshots: '@jest/pattern@30.0.1': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-regex-util: 30.0.1 '@jest/reporters@29.7.0': @@ -6231,7 +6355,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 22.18.10 + '@types/node': 24.13.3 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -6305,7 +6429,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -6315,7 +6439,7 @@ snapshots: '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -6375,712 +6499,712 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@opentelemetry/api-logs@0.203.0': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api@1.9.0': {} - - '@opentelemetry/auto-instrumentations-node@0.62.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-amqplib': 0.50.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-aws-lambda': 0.54.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-aws-sdk': 0.58.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-bunyan': 0.49.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-cassandra-driver': 0.49.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-connect': 0.47.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-cucumber': 0.19.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-dataloader': 0.21.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-dns': 0.47.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-express': 0.52.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fastify': 0.48.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fs': 0.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-generic-pool': 0.47.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-graphql': 0.51.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-grpc': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-hapi': 0.50.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-http': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-ioredis': 0.51.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-kafkajs': 0.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-knex': 0.48.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-koa': 0.51.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-lru-memoizer': 0.48.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-memcached': 0.47.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongodb': 0.56.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongoose': 0.50.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql': 0.49.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql2': 0.50.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-nestjs-core': 0.49.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-net': 0.47.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-oracledb': 0.29.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pg': 0.56.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pino': 0.50.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-redis': 0.52.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-restify': 0.49.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-router': 0.48.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-runtime-node': 0.17.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-socket.io': 0.50.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-tedious': 0.22.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-undici': 0.14.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-winston': 0.48.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-alibaba-cloud': 0.31.9(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-aws': 2.6.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-azure': 0.10.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-container': 0.7.9(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-gcp': 0.37.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-node': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs@0.221.0': + dependencies: + '@opentelemetry/api': 1.9.1 + + '@opentelemetry/api@1.9.1': {} + + '@opentelemetry/auto-instrumentations-node@0.79.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-amqplib': 0.68.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-aws-lambda': 0.73.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-aws-sdk': 0.76.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-bunyan': 0.66.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-cassandra-driver': 0.66.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-connect': 0.64.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-cucumber': 0.37.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-dataloader': 0.38.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-dns': 0.64.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-express': 0.69.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-fs': 0.40.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-generic-pool': 0.64.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-graphql': 0.69.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-grpc': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-hapi': 0.67.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-host-metrics': 0.4.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-http': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-ioredis': 0.69.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-kafkajs': 0.30.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-knex': 0.65.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-koa': 0.69.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-lru-memoizer': 0.65.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-memcached': 0.64.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-mongodb': 0.74.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-mongoose': 0.67.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-mysql': 0.67.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-mysql2': 0.67.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-nestjs-core': 0.67.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-net': 0.65.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-openai': 0.19.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-oracledb': 0.46.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-pg': 0.73.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-pino': 0.67.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-redis': 0.69.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-restify': 0.66.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-router': 0.65.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-runtime-node': 0.34.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-socket.io': 0.68.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-tedious': 0.40.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-undici': 0.31.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-winston': 0.65.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resource-detector-alibaba-cloud': 0.36.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resource-detector-aws': 2.21.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resource-detector-azure': 0.29.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resource-detector-container': 0.8.12(@opentelemetry/api@1.9.1) + '@opentelemetry/resource-detector-gcp': 0.56.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-node': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - - encoding - supports-color - '@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/configuration@0.221.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + yaml: 2.9.0 - '@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@2.10.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 + '@opentelemetry/api': 1.9.1 - '@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 + '@opentelemetry/api': 1.9.1 '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 + '@opentelemetry/api': 1.9.1 '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/exporter-logs-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@grpc/grpc-js': 1.14.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-logs-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-logs-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-metrics-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@grpc/grpc-js': 1.14.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-metrics-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-metrics-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-prometheus@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-trace-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@grpc/grpc-js': 1.14.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-trace-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-trace-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-zipkin@2.0.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-grpc@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.221.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-logs-otlp-http@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.221.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-logs-otlp-proto@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.221.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-metrics-otlp-grpc@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/exporter-metrics-otlp-http': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-metrics-otlp-http@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.10.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-metrics-otlp-proto@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/exporter-metrics-otlp-http': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-prometheus@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.37.0 + + '@opentelemetry/exporter-trace-otlp-grpc@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/exporter-zipkin@2.10.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/id-generator-aws-xray@2.0.3(@opentelemetry/api@1.9.0)': + '@opentelemetry/id-generator-aws-xray@2.1.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-amqplib@0.50.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-amqplib@0.68.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-aws-lambda@0.54.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-aws-lambda@0.73.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/propagator-aws-xray': 2.2.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@types/aws-lambda': 8.10.152 + '@types/aws-lambda': 8.10.162 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-aws-sdk@0.58.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-aws-sdk@0.76.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-bunyan@0.49.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-bunyan@0.66.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 '@types/bunyan': 1.8.11 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-cassandra-driver@0.49.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-cassandra-driver@0.66.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-connect@0.47.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-connect@0.64.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 '@types/connect': 3.4.38 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-cucumber@0.19.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-cucumber@0.37.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-dataloader@0.21.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-dataloader@0.38.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-dns@0.47.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-dns@0.64.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-express@0.52.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-express@0.69.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fastify@0.48.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-fs@0.40.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fs@0.23.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-generic-pool@0.64.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-generic-pool@0.47.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-graphql@0.69.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-graphql@0.51.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-grpc@0.221.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-grpc@0.203.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-hapi@0.67.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-hapi@0.50.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-host-metrics@0.4.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + systeminformation: 5.33.1 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-http@0.203.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-http@0.221.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 forwarded-parse: 2.1.2 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-ioredis@0.51.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-ioredis@0.69.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.38.2 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/redis-common': 0.38.3 '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-kafkajs@0.13.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-kafkajs@0.30.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-knex@0.48.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-knex@0.65.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-koa@0.51.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-koa@0.69.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-lru-memoizer@0.48.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-lru-memoizer@0.65.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-memcached@0.47.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-memcached@0.64.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 '@types/memcached': 2.2.10 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongodb@0.56.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mongodb@0.74.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongoose@0.50.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mongoose@0.67.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql2@0.50.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mysql2@0.67.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sql-common': 0.42.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql@0.49.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mysql@0.67.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 '@types/mysql': 2.15.27 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-nestjs-core@0.49.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-nestjs-core@0.67.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-net@0.65.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-net@0.47.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-openai@0.19.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-oracledb@0.29.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-oracledb@0.46.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 '@types/oracledb': 6.5.2 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-pg@0.56.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-pg@0.73.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) - '@types/pg': 8.15.5 - '@types/pg-pool': 2.0.6 + '@opentelemetry/sql-common': 0.42.0(@opentelemetry/api@1.9.1) + '@types/pg': 8.15.6 + '@types/pg-pool': 2.0.7 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-pino@0.50.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-pino@0.67.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-redis@0.52.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-redis@0.69.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.38.2 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/redis-common': 0.38.3 '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-restify@0.49.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-restify@0.66.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-router@0.48.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-router@0.65.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-runtime-node@0.17.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-runtime-node@0.34.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-socket.io@0.50.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-socket.io@0.68.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-tedious@0.22.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-tedious@0.40.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 '@types/tedious': 4.0.14 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-undici@0.14.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-undici@0.31.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-winston@0.48.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-winston@0.65.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation@0.221.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - import-in-the-middle: 1.15.0 - require-in-the-middle: 7.5.2 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + import-in-the-middle: 3.3.3 + require-in-the-middle: 8.0.1 transitivePeerDependencies: - supports-color - '@opentelemetry/otlp-exporter-base@0.203.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-exporter-base@0.221.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-grpc-exporter-base@0.203.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-grpc-exporter-base@0.221.0(@opentelemetry/api@1.9.1)': dependencies: - '@grpc/grpc-js': 1.14.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@grpc/grpc-js': 1.14.4 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer@0.203.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-transformer@0.221.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) - protobufjs: 7.5.5 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/propagator-aws-xray@2.2.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 - '@opentelemetry/propagator-b3@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-b3@2.10.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/propagator-jaeger@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-jaeger@2.10.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/redis-common@0.38.2': {} + '@opentelemetry/redis-common@0.38.3': {} - '@opentelemetry/resource-detector-alibaba-cloud@0.31.9(@opentelemetry/api@1.9.0)': + '@opentelemetry/resource-detector-alibaba-cloud@0.36.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resource-detector-aws@2.6.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resource-detector-aws@2.21.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/resource-detector-azure@0.10.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resource-detector-azure@0.29.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/resource-detector-container@0.7.9(@opentelemetry/api@1.9.0)': + '@opentelemetry/resource-detector-container@0.8.12(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resource-detector-gcp@0.37.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resource-detector-gcp@0.56.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - gcp-metadata: 6.1.1 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + gcp-metadata: 8.1.4 transitivePeerDependencies: - - encoding - supports-color - '@opentelemetry/resources@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/resources@2.1.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.37.0 + + '@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/resources@2.1.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-logs@0.221.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/sdk-logs@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/sdk-metrics@2.0.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - - '@opentelemetry/sdk-metrics@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/sdk-node@0.203.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.203.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-prometheus': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-zipkin': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-b3': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics@2.10.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/sdk-node@0.221.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.221.0 + '@opentelemetry/configuration': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/context-async-hooks': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-logs-otlp-grpc': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-logs-otlp-http': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-logs-otlp-proto': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-metrics-otlp-grpc': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-metrics-otlp-http': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-metrics-otlp-proto': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-prometheus': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-trace-otlp-grpc': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-trace-otlp-http': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-trace-otlp-proto': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-zipkin': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/propagator-b3': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/propagator-jaeger': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.221.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace-node': 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 transitivePeerDependencies: - supports-color - '@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/sdk-trace-node@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-node@2.10.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/context-async-hooks': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-node@2.1.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace@2.10.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.37.0 '@opentelemetry/semantic-conventions@1.37.0': {} - '@opentelemetry/sql-common@0.41.2(@opentelemetry/api@1.9.0)': + '@opentelemetry/semantic-conventions@1.43.0': {} + + '@opentelemetry/sql-common@0.42.0(@opentelemetry/api@1.9.1)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) + + '@pkgjs/parseargs@0.11.0': + optional: true '@protobufjs/aspromise@1.1.2': {} @@ -7223,6 +7347,14 @@ snapshots: dependencies: '@tiptap/core': 2.26.3(@tiptap/pm@2.26.3) + '@tiptap/extension-subscript@2.27.2(@tiptap/core@2.26.3(@tiptap/pm@2.26.3))': + dependencies: + '@tiptap/core': 2.26.3(@tiptap/pm@2.26.3) + + '@tiptap/extension-superscript@2.27.2(@tiptap/core@2.26.3(@tiptap/pm@2.26.3))': + dependencies: + '@tiptap/core': 2.26.3(@tiptap/pm@2.26.3) + '@tiptap/extension-table-cell@2.26.3(@tiptap/core@2.26.3(@tiptap/pm@2.26.3))': dependencies: '@tiptap/core': 2.26.3(@tiptap/pm@2.26.3) @@ -7337,7 +7469,7 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@types/aws-lambda@8.10.152': {} + '@types/aws-lambda@8.10.162': {} '@types/babel__core@7.20.5': dependencies: @@ -7362,17 +7494,17 @@ snapshots: '@types/bunyan@1.8.11': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/connect@3.4.38': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/estree@1.0.8': {} '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/istanbul-lib-coverage@2.0.6': {} @@ -7391,7 +7523,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -7419,41 +7551,39 @@ snapshots: '@types/memcached@2.2.10': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/mysql@2.15.27': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 - '@types/node@22.18.10': + '@types/node@24.13.3': dependencies: - undici-types: 6.21.0 + undici-types: 7.18.2 '@types/oracledb@6.5.2': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 - '@types/pg-pool@2.0.6': + '@types/pg-pool@2.0.7': dependencies: - '@types/pg': 8.15.5 + '@types/pg': 8.15.6 - '@types/pg@8.15.5': + '@types/pg@8.15.6': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 pg-protocol: 1.10.3 pg-types: 2.2.0 '@types/pug@2.0.10': {} - '@types/semver@7.7.1': {} - '@types/snappyjs@0.7.1': {} '@types/stack-utils@2.0.3': {} '@types/tedious@4.0.14': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/toposort@2.0.7': {} @@ -7465,7 +7595,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 '@types/yargs-parser@21.0.3': {} @@ -7473,97 +7603,96 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.3 - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 5.3.2 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.67.0(eslint@9.39.5)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(eslint@9.39.5)(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.5)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.67.0 + eslint: 9.39.5 + ignore: 7.0.6 natural-compare: 1.4.0 - semver: 7.7.3 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3 - eslint: 8.57.1 - optionalDependencies: + eslint: 9.39.5 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@6.21.0': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/project-service@8.67.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) + '@typescript-eslint/types': 8.67.0 debug: 4.4.3 - eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@6.21.0': {} + '@typescript-eslint/scope-manager@8.67.0': + dependencies: + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.67.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.67.0(eslint@9.39.5)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.5)(typescript@5.9.3) debug: 4.4.3 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.7.3 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: + eslint: 9.39.5 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/types@8.67.0': {} + + '@typescript-eslint/typescript-estree@8.67.0(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.7.1 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/project-service': 8.67.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 + debug: 4.4.3 + minimatch: 10.2.6 semver: 7.7.3 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@6.21.0': + '@typescript-eslint/utils@8.67.0(eslint@9.39.5)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - - '@ungap/structured-clone@1.3.0': {} + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.9.3) + eslint: 9.39.5 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - acorn-import-attributes@1.9.5(acorn@8.15.0): + '@typescript-eslint/visitor-keys@8.67.0': dependencies: - acorn: 8.15.0 + '@typescript-eslint/types': 8.67.0 + eslint-visitor-keys: 5.0.1 acorn-jsx@5.3.2(acorn@8.15.0): dependencies: @@ -7577,7 +7706,7 @@ snapshots: agent-base@7.1.4: {} - ajv@6.12.6: + ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -7590,12 +7719,16 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.3.0: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@5.2.0: {} + ansi-styles@6.2.3: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -7730,6 +7863,8 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + baseline-browser-mapping@2.8.16: {} bignumber.js@9.3.1: {} @@ -7745,6 +7880,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.9: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -7769,10 +7908,6 @@ snapshots: buffer-from@1.1.2: {} - builtins@5.1.0: - dependencies: - semver: 7.7.3 - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -7823,6 +7958,8 @@ snapshots: cjs-module-lexer@1.4.3: {} + cjs-module-lexer@2.2.1: {} + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -7866,13 +8003,13 @@ snapshots: convert-source-map@2.0.0: {} - create-jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)): + create-jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -7909,6 +8046,8 @@ snapshots: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 + data-uri-to-buffer@4.0.1: {} + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -7981,10 +8120,6 @@ snapshots: dependencies: esutils: 2.0.3 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -8009,14 +8144,23 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + eastasianwidth@0.2.0: {} + electron-to-chromium@1.5.237: {} emittery@0.13.1: {} emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + enabled@2.0.0: {} + enhanced-resolve@5.24.5: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + entities@4.5.0: {} entities@5.0.0: {} @@ -8088,6 +8232,8 @@ snapshots: es-errors@1.3.0: {} + es-module-lexer@2.3.2: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -8160,30 +8306,23 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@8.57.1): + eslint-compat-utils@0.5.1(eslint@9.39.5): dependencies: - eslint: 8.57.1 + eslint: 9.39.5 semver: 7.7.3 - eslint-config-standard-with-typescript@40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3): + eslint-config-love@155.0.0(eslint@9.39.5)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(eslint@8.57.1) - eslint-plugin-n: 15.7.0(eslint@8.57.1) - eslint-plugin-promise: 6.6.0(eslint@8.57.1) + '@eslint-community/eslint-plugin-eslint-comments': 4.7.2(eslint@9.39.5) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.5)(typescript@5.9.3) + eslint: 9.39.5 + eslint-plugin-n: 18.3.0(eslint@9.39.5)(typescript@5.9.3) + eslint-plugin-promise: 7.3.0(eslint@9.39.5) typescript: 5.9.3 + typescript-eslint: 8.67.0(eslint@9.39.5)(typescript@5.9.3) transitivePeerDependencies: - supports-color - - eslint-config-standard@17.1.0(eslint-plugin-import@2.32.0(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-plugin-import: 2.32.0(eslint@8.57.1) - eslint-plugin-n: 15.7.0(eslint@8.57.1) - eslint-plugin-promise: 6.6.0(eslint@8.57.1) + - ts-declaration-location eslint-import-resolver-node@0.3.9: dependencies: @@ -8191,25 +8330,20 @@ snapshots: is-core-module: 2.16.1 resolve: 1.22.10 - eslint-module-utils@2.12.1(eslint@8.57.1): + eslint-module-utils@2.12.1(eslint@9.39.5): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 8.57.1 - - eslint-plugin-es@3.0.1(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-utils: 2.1.0 - regexpp: 3.2.0 + eslint: 9.39.5 - eslint-plugin-es@4.1.0(eslint@8.57.1): + eslint-plugin-es-x@7.8.0(eslint@9.39.5): dependencies: - eslint: 8.57.1 - eslint-utils: 2.1.0 - regexpp: 3.2.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.39.5 + eslint-compat-utils: 0.5.1(eslint@9.39.5) - eslint-plugin-import@2.32.0(eslint@8.57.1): + eslint-plugin-import@2.32.0(eslint@9.39.5): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -8218,9 +8352,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 9.39.5 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint@8.57.1) + eslint-module-utils: 2.12.1(eslint@9.39.5) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -8232,119 +8366,98 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 - eslint-plugin-n@15.7.0(eslint@8.57.1): + eslint-plugin-n@18.3.0(eslint@9.39.5)(typescript@5.9.3): dependencies: - builtins: 5.1.0 - eslint: 8.57.1 - eslint-plugin-es: 4.1.0(eslint@8.57.1) - eslint-utils: 3.0.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5) + enhanced-resolve: 5.24.5 + eslint: 9.39.5 + eslint-plugin-es-x: 7.8.0(eslint@9.39.5) + get-tsconfig: 4.14.3 + globals: 15.15.0 + globrex: 0.1.2 ignore: 5.3.2 - is-core-module: 2.16.1 - minimatch: 3.1.2 - resolve: 1.22.10 semver: 7.7.3 + optionalDependencies: + typescript: 5.9.3 - eslint-plugin-node@11.1.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-plugin-es: 3.0.1(eslint@8.57.1) - eslint-utils: 2.1.0 - ignore: 5.3.2 - minimatch: 3.1.2 - resolve: 1.22.10 - semver: 6.3.1 - - eslint-plugin-promise@6.6.0(eslint@8.57.1): + eslint-plugin-promise@7.3.0(eslint@9.39.5): dependencies: - eslint: 8.57.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5) + eslint: 9.39.5 - eslint-plugin-svelte@2.46.1(eslint@8.57.1)(svelte@4.2.20)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)): + eslint-plugin-svelte@3.23.0(eslint@9.39.5)(svelte@4.2.20)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5) '@jridgewell/sourcemap-codec': 1.5.5 - eslint: 8.57.1 - eslint-compat-utils: 0.5.1(eslint@8.57.1) + eslint: 9.39.5 esutils: 2.0.3 - known-css-properties: 0.35.0 + globals: 16.5.0 + known-css-properties: 0.37.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) - postcss-safe-parser: 6.0.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) + postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.3 - svelte-eslint-parser: 0.43.0(svelte@4.2.20) + svelte-eslint-parser: 1.8.1(svelte@4.2.20) optionalDependencies: svelte: 4.2.20 transitivePeerDependencies: - ts-node - eslint-scope@7.2.2: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@2.1.0: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-utils@3.0.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 2.1.0 - - eslint-visitor-keys@1.3.0: {} + eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@2.1.0: {} + eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@5.0.1: {} - eslint@8.57.1: + eslint@9.39.5: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.5) '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.6 + '@eslint/js': 9.39.5 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.12.6 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 transitivePeerDependencies: - supports-color - espree@9.6.1: + espree@10.4.0: dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 3.4.3 + eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -8412,11 +8525,20 @@ snapshots: dependencies: bser: 2.1.1 + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + fecha@4.2.3: {} - file-entry-cache@6.0.1: + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 file-stream-rotator@0.6.1: dependencies: @@ -8436,11 +8558,10 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.3 keyv: 4.5.4 - rimraf: 3.0.2 flatted@3.3.3: {} @@ -8450,6 +8571,15 @@ snapshots: dependencies: is-callable: 1.2.7 + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + forwarded-parse@2.1.2: {} fs-extra@10.1.0: @@ -8476,24 +8606,21 @@ snapshots: functions-have-names@1.2.3: {} - gaxios@6.7.1: + gaxios@7.1.3: dependencies: extend: 3.0.2 https-proxy-agent: 7.0.6 - is-stream: 2.0.1 - node-fetch: 2.7.0 - uuid: 9.0.1 + node-fetch: 3.3.2 + rimraf: 5.0.10 transitivePeerDependencies: - - encoding - supports-color - gcp-metadata@6.1.1: + gcp-metadata@8.1.4: dependencies: - gaxios: 6.7.1 - google-logging-utils: 0.0.2 + gaxios: 7.1.3 + google-logging-utils: 1.1.3 json-bigint: 1.0.0 transitivePeerDependencies: - - encoding - supports-color generator-function@2.0.1: {} @@ -8530,6 +8657,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 + get-tsconfig@4.14.3: + dependencies: + resolve-pkg-maps: 1.0.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -8538,6 +8669,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -8547,9 +8687,11 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@13.24.0: - dependencies: - type-fest: 0.20.2 + globals@14.0.0: {} + + globals@15.15.0: {} + + globals@16.5.0: {} globalthis@1.0.4: dependencies: @@ -8565,14 +8707,14 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - google-logging-utils@0.0.2: {} + globrex@0.1.2: {} + + google-logging-utils@1.1.3: {} gopd@1.2.0: {} graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - handlebars@4.7.9: dependencies: minimist: 1.2.8 @@ -8641,16 +8783,17 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.6: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - import-in-the-middle@1.15.0: + import-in-the-middle@3.3.3: dependencies: - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) - cjs-module-lexer: 1.4.3 + cjs-module-lexer: 2.2.1 + es-module-lexer: 2.3.2 module-details-from-path: 1.0.4 import-local@3.2.0: @@ -8759,8 +8902,6 @@ snapshots: is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-potential-custom-element-name@1.0.1: {} is-reference@3.0.3: @@ -8855,6 +8996,12 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 @@ -8867,7 +9014,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.0 @@ -8887,16 +9034,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)): + jest-cli@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + create-jest: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -8906,7 +9053,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)): + jest-config@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)): dependencies: '@babel/core': 7.28.4 '@jest/test-sequencer': 29.7.0 @@ -8931,8 +9078,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.18.10 - ts-node: 10.9.2(@types/node@22.18.10)(typescript@5.9.3) + '@types/node': 24.13.3 + ts-node: 10.9.2(@types/node@24.13.3)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -8961,7 +9108,7 @@ snapshots: '@jest/environment': 30.2.0 '@jest/environment-jsdom-abstract': 30.2.0(jsdom@26.1.0) '@types/jsdom': 21.1.7 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jsdom: 26.1.0 transitivePeerDependencies: - bufferutil @@ -8973,7 +9120,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -8983,7 +9130,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.18.10 + '@types/node': 24.13.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -9034,13 +9181,13 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-util: 29.7.0 jest-mock@30.2.0: dependencies: '@jest/types': 30.2.0 - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-util: 30.2.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -9077,7 +9224,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -9105,7 +9252,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -9151,7 +9298,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -9160,7 +9307,7 @@ snapshots: jest-util@30.2.0: dependencies: '@jest/types': 30.2.0 - '@types/node': 22.18.10 + '@types/node': 24.13.3 chalk: 4.1.2 ci-info: 4.4.0 graceful-fs: 4.2.11 @@ -9179,7 +9326,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.18.10 + '@types/node': 24.13.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -9188,17 +9335,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.18.10 + '@types/node': 24.13.3 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)): + jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + jest-cli: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -9212,7 +9359,7 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.3.1: dependencies: argparse: 2.0.1 @@ -9236,7 +9383,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.18.3 + ws: 8.21.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -9277,7 +9424,7 @@ snapshots: kleur@3.0.3: {} - known-css-properties@0.35.0: {} + known-css-properties@0.37.0: {} kuler@2.0.0: {} @@ -9379,16 +9526,26 @@ snapshots: min-indent@1.0.1: {} + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.9 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 - minimatch@9.0.3: + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 minimist@1.2.8: {} + minipass@7.1.3: {} + mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -9421,9 +9578,13 @@ snapshots: neo-async@2.6.2: {} - node-fetch@2.7.0: + node-domexception@1.0.0: {} + + node-fetch@3.3.2: dependencies: - whatwg-url: 5.0.0 + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 node-gyp-build-optional-packages@5.2.2: dependencies: @@ -9524,6 +9685,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -9547,6 +9710,11 @@ snapshots: path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + path-type@4.0.0: {} periscopic@3.1.0: @@ -9573,6 +9741,8 @@ snapshots: picomatch@4.0.3: {} + picomatch@4.0.5: {} + pirates@4.0.7: {} pkg-dir@4.2.0: @@ -9581,15 +9751,15 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)): + postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.2(@types/node@22.18.10)(typescript@5.9.3) + ts-node: 10.9.2(@types/node@24.13.3)(typescript@5.9.3) - postcss-safe-parser@6.0.0(postcss@8.5.6): + postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -9597,7 +9767,7 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-selector-parser@6.1.2: + postcss-selector-parser@7.1.5: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -9768,7 +9938,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.18.10 + '@types/node': 24.13.3 long: 5.3.2 punycode.js@2.3.1: {} @@ -9811,15 +9981,12 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - regexpp@3.2.0: {} - require-directory@2.1.1: {} - require-in-the-middle@7.5.2: + require-in-the-middle@8.0.1: dependencies: debug: 4.4.3 module-details-from-path: 1.0.4 - resolve: 1.22.10 transitivePeerDependencies: - supports-color @@ -9831,6 +9998,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve.exports@2.0.3: {} resolve@1.22.10: @@ -9845,9 +10014,9 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@3.0.2: + rimraf@5.0.10: dependencies: - glob: 7.2.3 + glob: 10.5.0 rope-sequence@1.3.4: {} @@ -9957,6 +10126,8 @@ snapshots: signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + sisteransi@1.0.5: {} slash@3.0.0: {} @@ -10003,6 +10174,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 @@ -10034,6 +10211,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.3.0 + strip-bom@3.0.0: {} strip-bom@4.0.0: {} @@ -10056,27 +10237,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-eslint-parser@0.33.1(svelte@4.2.20): - dependencies: - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - postcss: 8.5.6 - postcss-scss: 4.0.9(postcss@8.5.6) - optionalDependencies: - svelte: 4.2.20 - - svelte-eslint-parser@0.43.0(svelte@4.2.20): + svelte-eslint-parser@1.8.1(svelte@4.2.20): dependencies: - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 postcss: 8.5.6 postcss-scss: 4.0.9(postcss@8.5.6) + postcss-selector-parser: 7.1.5 + semver: 7.7.3 optionalDependencies: svelte: 4.2.20 - svelte-preprocess@5.1.4(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(postcss@8.5.6)(svelte@4.2.20)(typescript@5.9.3): + svelte-preprocess@5.1.4(@babel/core@7.28.4)(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(postcss@8.5.6)(svelte@4.2.20)(typescript@5.9.3): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 @@ -10087,7 +10260,7 @@ snapshots: optionalDependencies: '@babel/core': 7.28.4 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) typescript: 5.9.3 svelte2tsx@0.7.45(svelte@4.2.20)(typescript@5.9.3): @@ -10116,6 +10289,10 @@ snapshots: symbol-tree@3.2.4: {} + systeminformation@5.33.1: {} + + tapable@2.3.3: {} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -10124,7 +10301,10 @@ snapshots: text-hex@1.0.0: {} - text-table@0.2.0: {} + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 tldts-core@6.1.86: {} @@ -10144,24 +10324,22 @@ snapshots: dependencies: tldts: 6.1.86 - tr46@0.0.3: {} - tr46@5.1.1: dependencies: punycode: 2.3.1 triple-beam@1.4.1: {} - ts-api-utils@1.4.3(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@5.9.3): dependencies: typescript: 5.9.3 - ts-jest@29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(esbuild@0.25.11)(jest-util@30.2.0)(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 29.7.0(@types/node@22.18.10)(ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3)) + jest: 29.7.0(@types/node@24.13.3)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -10177,14 +10355,14 @@ snapshots: esbuild: 0.25.11 jest-util: 30.2.0 - ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3): + ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.18.10 + '@types/node': 24.13.3 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -10210,8 +10388,6 @@ snapshots: type-detect@4.0.8: {} - type-fest@0.20.2: {} - type-fest@0.21.3: {} type-fest@4.41.0: {} @@ -10249,6 +10425,17 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typescript-eslint@8.67.0(eslint@9.39.5)(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5)(typescript@5.9.3))(eslint@9.39.5)(typescript@5.9.3) + '@typescript-eslint/parser': 8.67.0(eslint@9.39.5)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.5)(typescript@5.9.3) + eslint: 9.39.5 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.9.3: {} uc.micro@2.1.0: {} @@ -10263,7 +10450,7 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@6.21.0: {} + undici-types@7.18.2: {} universalify@2.0.1: {} @@ -10281,8 +10468,6 @@ snapshots: uuid@8.3.2: {} - uuid@9.0.1: {} - v8-compile-cache-lib@3.0.1: {} v8-to-istanbul@9.3.0: @@ -10301,7 +10486,7 @@ snapshots: dependencies: makeerror: 1.0.12 - webidl-conversions@3.0.1: {} + web-streams-polyfill@3.3.3: {} webidl-conversions@7.0.0: {} @@ -10316,11 +10501,6 @@ snapshots: tr46: 5.1.1 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -10404,6 +10584,12 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + wrappy@1.0.2: {} write-file-atomic@4.0.2: @@ -10411,7 +10597,7 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@8.18.3: {} + ws@8.21.3: {} xml-name-validator@5.0.0: {} @@ -10439,6 +10625,8 @@ snapshots: yaml@1.10.2: {} + yaml@2.9.0: {} + yargs-parser@21.1.1: {} yargs@17.7.2: diff --git a/foundations/core/common/scripts/package.json b/foundations/core/common/scripts/package.json index 16ed6d50e8..4736b0985a 100644 --- a/foundations/core/common/scripts/package.json +++ b/foundations/core/common/scripts/package.json @@ -6,14 +6,15 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1" + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0" }, "private": true } diff --git a/foundations/core/packages/account-client/.eslintrc.js b/foundations/core/packages/account-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/account-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/account-client/eslint.config.mjs b/foundations/core/packages/account-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/account-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/account-client/package.json b/foundations/core/packages/account-client/package.json index 47091b38f7..3ff41db0e6 100644 --- a/foundations/core/packages/account-client/package.json +++ b/foundations/core/packages/account-client/package.json @@ -27,20 +27,20 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/foundations/core/packages/account-client/src/client.ts b/foundations/core/packages/account-client/src/client.ts index bc3aac4aec..21d8ab109d 100644 --- a/foundations/core/packages/account-client/src/client.ts +++ b/foundations/core/packages/account-client/src/client.ts @@ -327,7 +327,7 @@ class AccountClientImpl implements AccountClient { })() } - private async _rpc(request: Request): Promise { + private async _rpc (request: Request): Promise { const timezone = getClientTimezone() const meta: Record = timezone !== undefined ? { 'x-timezone': timezone } : {} const response = await fetch(this.url, { diff --git a/foundations/core/packages/analytics-service/.eslintrc.js b/foundations/core/packages/analytics-service/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/analytics-service/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/analytics-service/eslint.config.mjs b/foundations/core/packages/analytics-service/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/analytics-service/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/analytics-service/package.json b/foundations/core/packages/analytics-service/package.json index 0bd10236aa..a91146439b 100644 --- a/foundations/core/packages/analytics-service/package.json +++ b/foundations/core/packages/analytics-service/package.json @@ -25,19 +25,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/foundations/core/packages/analytics/.eslintrc.js b/foundations/core/packages/analytics/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/analytics/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/analytics/eslint.config.mjs b/foundations/core/packages/analytics/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/analytics/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/analytics/package.json b/foundations/core/packages/analytics/package.json index 145d9e5ea2..d965f9b0a2 100644 --- a/foundations/core/packages/analytics/package.json +++ b/foundations/core/packages/analytics/package.json @@ -25,19 +25,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20" diff --git a/foundations/core/packages/api-client/.eslintrc.js b/foundations/core/packages/api-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/api-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/api-client/eslint.config.mjs b/foundations/core/packages/api-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/api-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/api-client/package.json b/foundations/core/packages/api-client/package.json index 1194d20982..68b8a892bc 100644 --- a/foundations/core/packages/api-client/package.json +++ b/foundations/core/packages/api-client/package.json @@ -33,23 +33,23 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "@types/node": "^24.13.3", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/ws": "^8.18.1", "@types/snappyjs": "^0.7.1", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/account-client": "workspace:^0.7.25", diff --git a/foundations/core/packages/api-client/src/client.ts b/foundations/core/packages/api-client/src/client.ts index cc52f7035c..9caf0cac73 100644 --- a/foundations/core/packages/api-client/src/client.ts +++ b/foundations/core/packages/api-client/src/client.ts @@ -143,7 +143,7 @@ class PlatformClientImpl implements PlatformClient { return this.account } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -151,7 +151,7 @@ class PlatformClientImpl implements PlatformClient { return await this.client.findOne(_class, query, options) } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -159,7 +159,7 @@ class PlatformClientImpl implements PlatformClient { return await this.client.findAll(_class, query, options) } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -167,7 +167,7 @@ class PlatformClientImpl implements PlatformClient { return await this.client.findAllPage(_class, query, options) } - iterateAll( + iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -179,7 +179,7 @@ class PlatformClientImpl implements PlatformClient { await this.connection.close() } - private async processMarkup(_class: Ref>, id: Ref, data: WithMarkup): Promise { + private async processMarkup (_class: Ref>, id: Ref, data: WithMarkup): Promise { const result: any = {} for (const [key, value] of Object.entries(data)) { @@ -195,7 +195,7 @@ class PlatformClientImpl implements PlatformClient { // DocOperations - async createDoc( + async createDoc ( _class: Ref>, space: Ref, attributes: WithMarkup>, @@ -206,7 +206,7 @@ class PlatformClientImpl implements PlatformClient { return await this.client.createDoc(_class, space, data, id) } - async updateDoc( + async updateDoc ( _class: Ref>, space: Ref, objectId: Ref, @@ -217,13 +217,13 @@ class PlatformClientImpl implements PlatformClient { return await this.client.updateDoc(_class, space, objectId, update, retrieve) } - async removeDoc(_class: Ref>, space: Ref, objectId: Ref): Promise { + async removeDoc (_class: Ref>, space: Ref, objectId: Ref): Promise { return await this.client.removeDoc(_class, space, objectId) } // CollectionOperations - async addCollection( + async addCollection ( _class: Ref>, space: Ref, attachedTo: Ref, @@ -237,7 +237,7 @@ class PlatformClientImpl implements PlatformClient { return await this.client.addCollection(_class, space, attachedTo, attachedToClass, collection, data, id) } - async updateCollection( + async updateCollection ( _class: Ref>, space: Ref, objectId: Ref

, @@ -260,7 +260,7 @@ class PlatformClientImpl implements PlatformClient { ) } - async removeCollection( + async removeCollection ( _class: Ref>, space: Ref, objectId: Ref

, @@ -273,7 +273,7 @@ class PlatformClientImpl implements PlatformClient { // MixinOperations - async createMixin( + async createMixin ( objectId: Ref, objectClass: Ref>, objectSpace: Ref, @@ -284,7 +284,7 @@ class PlatformClientImpl implements PlatformClient { return await this.client.createMixin(objectId, objectClass, objectSpace, mixin, data) } - async updateMixin( + async updateMixin ( objectId: Ref, objectClass: Ref>, objectSpace: Ref, diff --git a/foundations/core/packages/api-client/src/index.ts b/foundations/core/packages/api-client/src/index.ts index 2379b838de..136511a1f9 100644 --- a/foundations/core/packages/api-client/src/index.ts +++ b/foundations/core/packages/api-client/src/index.ts @@ -16,7 +16,7 @@ export * from './client' export * from './markup/types' export * from './socket' -export * from './types' +export type * from './types' export * from './rest' export * from './config' export * from './utils' diff --git a/foundations/core/packages/api-client/src/rest/adapter.ts b/foundations/core/packages/api-client/src/rest/adapter.ts index ea0039e6e4..29850d96fd 100644 --- a/foundations/core/packages/api-client/src/rest/adapter.ts +++ b/foundations/core/packages/api-client/src/rest/adapter.ts @@ -47,7 +47,7 @@ export class RestClientAdapter implements Client { private readonly model: ModelDb | undefined ) {} - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -55,7 +55,7 @@ export class RestClientAdapter implements Client { return await this.client.domainRequest(domain, params, options) } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -63,7 +63,7 @@ export class RestClientAdapter implements Client { return await this.client.findAll(_class, query, options) } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -71,7 +71,7 @@ export class RestClientAdapter implements Client { return await this.client.findAllPage(_class, query, options) } - iterateAll( + iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -83,7 +83,7 @@ export class RestClientAdapter implements Client { return await this.client.tx(tx) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions diff --git a/foundations/core/packages/api-client/src/rest/index.ts b/foundations/core/packages/api-client/src/rest/index.ts index e2f5f2608f..00bf83f7d7 100644 --- a/foundations/core/packages/api-client/src/rest/index.ts +++ b/foundations/core/packages/api-client/src/rest/index.ts @@ -16,4 +16,4 @@ export { RestClientAdapter } from './adapter' export { createRestClient, connectRest } from './rest' export { createRestTxOperations } from './tx' -export * from './types' +export type * from './types' diff --git a/foundations/core/packages/api-client/src/rest/rest.ts b/foundations/core/packages/api-client/src/rest/rest.ts index a098ca9703..aef5464182 100644 --- a/foundations/core/packages/api-client/src/rest/rest.ts +++ b/foundations/core/packages/api-client/src/rest/rest.ts @@ -106,7 +106,7 @@ export class RestClientImpl implements RestClient { } } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -168,7 +168,7 @@ export class RestClientImpl implements RestClient { return result } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -224,7 +224,7 @@ export class RestClientImpl implements RestClient { return result } - async * iterateAll( + async *iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -332,7 +332,7 @@ export class RestClientImpl implements RestClient { return result } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -395,7 +395,7 @@ export class RestClientImpl implements RestClient { return result } - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -455,7 +455,7 @@ export class RestClientImpl implements RestClient { return result } - private async v1op(op: string, data: any): Promise

{ + private async v1op (op: string, data: any): Promise

{ const requestUrl = concatLink(this.endpoint, `/api/v1/${op}/${this.workspace}`) await this.checkRate() const result = await withRetry<{ result?: Ref, error?: Status }>(async () => { @@ -478,7 +478,7 @@ export class RestClientImpl implements RestClient { return result as P } - createDoc( + createDoc ( _class: Ref>, space: Ref, attributes: Data, @@ -496,7 +496,7 @@ export class RestClientImpl implements RestClient { }) } - addCollection( + addCollection ( _class: Ref>, space: Ref, attachedTo: Ref, @@ -520,7 +520,7 @@ export class RestClientImpl implements RestClient { }) } - update( + update ( doc: T, update: DocumentUpdate, retrieve?: boolean, @@ -545,7 +545,7 @@ export class RestClientImpl implements RestClient { return this.v1op('update', req) } - remove(doc: T, modifiedOn?: Timestamp, modifiedBy?: PersonId): Promise { + remove (doc: T, modifiedOn?: Timestamp, modifiedBy?: PersonId): Promise { const req = { _class: doc._class, _id: doc._id, @@ -562,7 +562,7 @@ export class RestClientImpl implements RestClient { return this.v1op('remove', req) } - createMixin( + createMixin ( objectId: Ref, objectClass: Ref>, objectSpace: Ref, @@ -582,7 +582,7 @@ export class RestClientImpl implements RestClient { }) } - updateMixin( + updateMixin ( objectId: Ref, objectClass: Ref>, objectSpace: Ref, diff --git a/foundations/core/packages/api-client/src/rest/tx.ts b/foundations/core/packages/api-client/src/rest/tx.ts index 592b16ade0..aacdbe0aff 100644 --- a/foundations/core/packages/api-client/src/rest/tx.ts +++ b/foundations/core/packages/api-client/src/rest/tx.ts @@ -68,7 +68,7 @@ class RestTxClient implements Client { return Promise.resolve() } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -80,7 +80,7 @@ class RestTxClient implements Client { return toFindResult(result, data.total) } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -92,7 +92,7 @@ class RestTxClient implements Client { } } - async * iterateAll( + async *iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -111,7 +111,7 @@ class RestTxClient implements Client { } while (cursor !== undefined) } - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -119,7 +119,7 @@ class RestTxClient implements Client { return await this.client.domainRequest(domain, params, options) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions diff --git a/foundations/core/packages/api-client/src/storage/client.ts b/foundations/core/packages/api-client/src/storage/client.ts index 025d7d8ac5..b628d8b742 100644 --- a/foundations/core/packages/api-client/src/storage/client.ts +++ b/foundations/core/packages/api-client/src/storage/client.ts @@ -173,7 +173,7 @@ async function toBuffer (data: Buffer | string | Readable): Promise { for await (const chunk of data) { chunks.push(chunk) } - return Buffer.concat(chunks as any) + return Buffer.concat(chunks) } else { throw new TypeError('Unsupported data type') } diff --git a/foundations/core/packages/api-client/src/storage/index.ts b/foundations/core/packages/api-client/src/storage/index.ts index 8be0b038d4..555ed78e2c 100644 --- a/foundations/core/packages/api-client/src/storage/index.ts +++ b/foundations/core/packages/api-client/src/storage/index.ts @@ -15,4 +15,4 @@ export { createStorageClient, connectStorage } from './client' export * from './error' -export * from './types' +export type * from './types' diff --git a/foundations/core/packages/api-client/src/types.ts b/foundations/core/packages/api-client/src/types.ts index 086d7af464..607e98145f 100644 --- a/foundations/core/packages/api-client/src/types.ts +++ b/foundations/core/packages/api-client/src/types.ts @@ -47,9 +47,9 @@ type WithPropertyType = { /** @public */ export type WithMarkup = WithPropertyType< -WithPropertyType, -CollaborativeDoc, -MarkupContent + WithPropertyType, + CollaborativeDoc, + MarkupContent > /** @@ -65,11 +65,11 @@ export type PlatformClient = { close: () => Promise } & FindOperations & -DocOperations & -CollectionOperations & -MixinOperations & -MarkupOperations & -AsyncDisposable + DocOperations & + CollectionOperations & + MixinOperations & + MarkupOperations & + AsyncDisposable /** * @public diff --git a/foundations/core/packages/client-resources/.eslintrc.js b/foundations/core/packages/client-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/client-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/client-resources/eslint.config.mjs b/foundations/core/packages/client-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/client-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/client-resources/package.json b/foundations/core/packages/client-resources/package.json index 8428994622..dc49e1ee39 100644 --- a/foundations/core/packages/client-resources/package.json +++ b/foundations/core/packages/client-resources/package.json @@ -25,23 +25,23 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/snappyjs": "^0.7.1", "@types/node": "^24.13.3", "ws": "^8.21.0", "@types/ws": "^8.18.1", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/foundations/core/packages/client-resources/src/__tests__/connection.test.ts b/foundations/core/packages/client-resources/src/__tests__/connection.test.ts index 7fb4f195be..ec33251c2b 100644 --- a/foundations/core/packages/client-resources/src/__tests__/connection.test.ts +++ b/foundations/core/packages/client-resources/src/__tests__/connection.test.ts @@ -303,7 +303,7 @@ describe('connect function', () => { mockWebSockets.push(mockWs) const client = connect('ws://localhost:3333', handler, workspaceId, userId, { - socketFactory: (url: string) => mockWs as any + socketFactory: (url: string) => mockWs }) connections.push(client) @@ -333,7 +333,7 @@ describe('connect function', () => { const mockWs = new MockWebSocket('ws://localhost:3333') const client = connect('ws://localhost:3333', handler, workspaceId, userId, { - socketFactory: (url: string) => mockWs as any + socketFactory: (url: string) => mockWs }) connections.push(client) diff --git a/foundations/core/packages/client-resources/src/__tests__/integration.test.ts b/foundations/core/packages/client-resources/src/__tests__/integration.test.ts index c0f6b2642e..f144c2e3eb 100644 --- a/foundations/core/packages/client-resources/src/__tests__/integration.test.ts +++ b/foundations/core/packages/client-resources/src/__tests__/integration.test.ts @@ -167,7 +167,7 @@ export class MockClientConnection implements ClientConnection { this.handlers.push(handler) } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions diff --git a/foundations/core/packages/client-resources/src/connection.ts b/foundations/core/packages/client-resources/src/connection.ts index d1757cff4d..3d470af14d 100644 --- a/foundations/core/packages/client-resources/src/connection.ts +++ b/foundations/core/packages/client-resources/src/connection.ts @@ -896,7 +896,7 @@ class Connection implements ClientConnection { return this.sendRequest({ method: 'getAccount', params: [] }) } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -959,7 +959,7 @@ class Connection implements ClientConnection { return result } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions diff --git a/foundations/core/packages/client/.eslintrc.js b/foundations/core/packages/client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/client/eslint.config.mjs b/foundations/core/packages/client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/client/package.json b/foundations/core/packages/client/package.json index 4a9998b3d5..36a246e3a7 100644 --- a/foundations/core/packages/client/package.json +++ b/foundations/core/packages/client/package.json @@ -25,20 +25,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/foundations/core/packages/client/src/__tests__/client.test.ts b/foundations/core/packages/client/src/__tests__/client.test.ts index 8e71ac8fb6..6b2c77d0ae 100644 --- a/foundations/core/packages/client/src/__tests__/client.test.ts +++ b/foundations/core/packages/client/src/__tests__/client.test.ts @@ -161,7 +161,7 @@ class TestConnection implements ClientConnection { this.handlers.push(handler) } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions diff --git a/foundations/core/packages/collaborator-client/.eslintrc.js b/foundations/core/packages/collaborator-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/collaborator-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/collaborator-client/eslint.config.mjs b/foundations/core/packages/collaborator-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/collaborator-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/collaborator-client/package.json b/foundations/core/packages/collaborator-client/package.json index 331427f438..0e99a8d439 100644 --- a/foundations/core/packages/collaborator-client/package.json +++ b/foundations/core/packages/collaborator-client/package.json @@ -27,20 +27,20 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26" diff --git a/foundations/core/packages/collaborator-client/src/client.ts b/foundations/core/packages/collaborator-client/src/client.ts index 8cabaf1285..c4b77aeae3 100644 --- a/foundations/core/packages/collaborator-client/src/client.ts +++ b/foundations/core/packages/collaborator-client/src/client.ts @@ -66,7 +66,7 @@ class CollaboratorClientImpl implements CollaboratorClient { private readonly collaboratorUrl: string ) {} - private async rpc(document: CollaborativeDoc, method: string, payload: P): Promise { + private async rpc (document: CollaborativeDoc, method: string, payload: P): Promise { const workspace = this.workspace const documentId = encodeDocumentId(workspace, document) diff --git a/foundations/core/packages/core/.eslintrc.js b/foundations/core/packages/core/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/core/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/core/eslint.config.mjs b/foundations/core/packages/core/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/core/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/core/package.json b/foundations/core/packages/core/package.json index 8bed4ad2c6..fca55f3065 100644 --- a/foundations/core/packages/core/package.json +++ b/foundations/core/packages/core/package.json @@ -29,20 +29,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -68,8 +68,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" } } } diff --git a/foundations/core/packages/core/src/__tests__/client.test.ts b/foundations/core/packages/core/src/__tests__/client.test.ts index ae01a11545..2a063625df 100644 --- a/foundations/core/packages/core/src/__tests__/client.test.ts +++ b/foundations/core/packages/core/src/__tests__/client.test.ts @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -import { type IntlString, type Plugin } from '@hcengineering/platform' +import type { IntlString, Plugin } from '@hcengineering/platform' import { ClientConnectEvent, type DocChunk } from '..' import type { Class, Data, Doc, Domain, PluginConfiguration, Ref, Space, Timestamp } from '../classes' import { ClassifierKind, DOMAIN_MODEL } from '../classes' @@ -122,8 +122,8 @@ describe('client', () => { } get onConnect (): - | ((event: ClientConnectEvent, lastTx: string | undefined, data: any) => Promise) - | undefined { + | ((event: ClientConnectEvent, lastTx: string | undefined, data: any) => Promise) + | undefined { return this.handler } @@ -135,9 +135,7 @@ describe('client', () => { return Promise.resolve({ domain: 'test' as Domain, value: null }) } - searchFulltext = async (query: SearchQuery, options: SearchOptions): Promise => { - return { docs: [] } - } + searchFulltext = async (query: SearchQuery, options: SearchOptions): Promise => ({ docs: [] }) tx = async (tx: Tx): Promise => { if (tx.objectSpace === core.space.Model) { @@ -243,7 +241,7 @@ describe('client', () => { expect(result3[0]._id).toStrictEqual(txCreateDoc2.objectId) expect(spyCreate).toHaveBeenLastCalledWith(txCreateDoc2, false) expect(spyUpdate.mock.calls[1][1]).toStrictEqual(txUpdateDoc) - expect(spyUpdate).toBeCalledTimes(2) + expect(spyUpdate).toHaveBeenCalledTimes(2) await client3.close() spyCreate.mockReset() diff --git a/foundations/core/packages/core/src/__tests__/connection.ts b/foundations/core/packages/core/src/__tests__/connection.ts index 93f2775f59..3dc05a7673 100644 --- a/foundations/core/packages/core/src/__tests__/connection.ts +++ b/foundations/core/packages/core/src/__tests__/connection.ts @@ -15,7 +15,7 @@ import { ClientConnectEvent, type DocChunk, generateId } from '..' import type { Class, Doc, Domain, Ref, Timestamp } from '../classes' -import { type ClientConnection } from '../client' +import type { ClientConnection } from '../client' import core from '../component' import { Hierarchy } from '../hierarchy' import { ModelDb, TxDb } from '../memdb' @@ -46,7 +46,7 @@ export async function connect (handler: (tx: Tx) => void): Promise (_class: Ref>, query: DocumentQuery): Promise> { - const domain = hierarchy.getClass(_class).domain + const { domain } = hierarchy.getClass(_class) if (domain === DOMAIN_TX) return await transactions.findAll(_class, query) return await model.findAll(_class, query) } diff --git a/foundations/core/packages/core/src/__tests__/hierarchy.test.ts b/foundations/core/packages/core/src/__tests__/hierarchy.test.ts index b6cdf4c507..331810c8eb 100644 --- a/foundations/core/packages/core/src/__tests__/hierarchy.test.ts +++ b/foundations/core/packages/core/src/__tests__/hierarchy.test.ts @@ -15,7 +15,7 @@ import type { AnyAttribute, Class, Doc, Obj, Ref } from '../classes' import { ClassifierKind, DOMAIN_MODEL } from '../classes' -import type { TxCreateDoc } from '../tx' +import type { MixinUpdate, TxCreateDoc } from '../tx' import { TxFactory } from '../tx' import core from '../component' import { Hierarchy } from '../hierarchy' @@ -62,7 +62,7 @@ describe('hierarchy', () => { const data = hierarchy.getClass(core.class.TxCreateDoc) expect(data).toMatchObject((txes.find((p) => p.objectId === core.class.TxCreateDoc) as TxCreateDoc).attributes) const notExistClass = 'class:test.MyClass' as Ref> - expect(() => hierarchy.getClass(notExistClass)).toThrowError('class not found: ' + notExistClass) + expect(() => hierarchy.getClass(notExistClass)).toThrow('class not found: ' + notExistClass) }) it('getDomain', async () => { @@ -78,10 +78,10 @@ describe('hierarchy', () => { const hierarchy = prepare() hierarchy.as(txes[0], test.mixin.TestMixin) - expect(spyProxy).toBeCalledTimes(1) + expect(spyProxy).toHaveBeenCalledTimes(1) hierarchy.as(txes[0], test.mixin.TestMixin) - expect(spyProxy).toBeCalledTimes(1) + expect(spyProxy).toHaveBeenCalledTimes(1) spyProxy.mockReset() spyProxy.mockRestore() @@ -90,20 +90,20 @@ describe('hierarchy', () => { it('should call static methods', async () => { const spyToDoc = jest.spyOn(Proxy, '_toDoc') Hierarchy.toDoc(txes[0]) - expect(spyToDoc).toBeCalledTimes(1) + expect(spyToDoc).toHaveBeenCalledTimes(1) spyToDoc.mockReset() spyToDoc.mockRestore() const spyMixinClass = jest.spyOn(Proxy, '_mixinClass') Hierarchy.mixinClass(txes[0]) - expect(spyMixinClass).toBeCalledTimes(1) + expect(spyMixinClass).toHaveBeenCalledTimes(1) spyMixinClass.mockImplementationOnce(() => undefined).mockImplementationOnce(() => test.mixin.TestMixin) let result = Hierarchy.mixinOrClass(txes[0]) expect(result).toStrictEqual(txes[0]._class) result = Hierarchy.mixinOrClass(txes[0]) expect(result).toStrictEqual(test.mixin.TestMixin) - expect(spyMixinClass).toBeCalledTimes(3) + expect(spyMixinClass).toHaveBeenCalledTimes(3) spyMixinClass.mockReset() spyMixinClass.mockRestore() @@ -364,7 +364,7 @@ describe('hierarchy', () => { expect(withStateInterface._id).toBe(test.interface.WithState) // Should throw for non-existent - expect(() => hierarchy.getClassOrInterface('class:NonExistent' as Ref>)).toThrowError( + expect(() => hierarchy.getClassOrInterface('class:NonExistent' as Ref>)).toThrow( 'class not found: class:NonExistent' ) }) @@ -377,12 +377,12 @@ describe('hierarchy', () => { expect(withStateInterface._id).toBe(test.interface.WithState) // Should throw for non-existent interface - expect(() => hierarchy.getInterface('interface:NonExistent' as any)).toThrowError( + expect(() => hierarchy.getInterface('interface:NonExistent' as any)).toThrow( 'interface not found: interface:NonExistent' ) // Should throw for class (not interface) - expect(() => hierarchy.getInterface(core.class.Space as any)).toThrowError() + expect(() => hierarchy.getInterface(core.class.Space as any)).toThrow() }) it('should handle isMixin correctly', async () => { @@ -525,7 +525,7 @@ describe('hierarchy', () => { const hierarchy = prepare() // Should throw for non-existent attribute - expect(() => hierarchy.getAttribute(core.class.Space, 'nonExistentAttr')).toThrowError( + expect(() => hierarchy.getAttribute(core.class.Space, 'nonExistentAttr')).toThrow( 'attribute not found: nonExistentAttr' ) }) @@ -607,16 +607,14 @@ describe('hierarchy', () => { const hierarchy = prepare() // Should throw for non-existent class - expect(() => hierarchy.getAncestors('class:NonExistent' as any)).toThrowError( - 'ancestors not found: class:NonExistent' - ) + expect(() => hierarchy.getAncestors('class:NonExistent' as any)).toThrow('ancestors not found: class:NonExistent') }) it('should handle getDescendants error case', async () => { const hierarchy = prepare() // Should throw for non-existent class - expect(() => hierarchy.getDescendants('class:NonExistent' as any)).toThrowError( + expect(() => hierarchy.getDescendants('class:NonExistent' as any)).toThrow( 'descendants not found: class:NonExistent' ) }) @@ -625,7 +623,7 @@ describe('hierarchy', () => { const hierarchy = prepare() // Should throw for class without domain - expect(() => hierarchy.getDomain('class:NonExistent' as any)).toThrowError('domain not found: class:NonExistent') + expect(() => hierarchy.getDomain('class:NonExistent' as any)).toThrow('domain not found: class:NonExistent') }) it('should handle static hasMixin correctly', async () => { @@ -816,11 +814,11 @@ describe('hierarchy', () => { // Create a TxMixin transaction const txFactory = new TxFactory(core.account.System) const mixinTx = txFactory.createTxMixin( - core.class.Space as any, - core.class.Class as any, + core.class.Space, + core.class.Class, core.space.Model, test.mixin.TestMixin, - { arr: ['test'] } + { arr: ['test'] } as unknown as MixinUpdate, Class> ) // Apply the mixin transaction @@ -992,7 +990,7 @@ describe('hierarchy', () => { } } - const result = hierarchy.updateLookupMixin(test.class.Task, doc as any, options as any) + const result = hierarchy.updateLookupMixin(test.class.Task, doc as any, options) expect(result).toBeDefined() expect(result.$lookup).toBeDefined() }) @@ -1029,7 +1027,7 @@ describe('hierarchy', () => { } } - const result = hierarchy.updateLookupMixin(test.class.Task, doc as any, options as any) + const result = hierarchy.updateLookupMixin(test.class.Task, doc as any, options) expect(result).toBeDefined() }) @@ -1091,7 +1089,7 @@ describe('hierarchy', () => { } } - const result = hierarchy.updateLookupMixin(test.class.Task, doc as any, options as any) + const result = hierarchy.updateLookupMixin(test.class.Task, doc as any, options) expect(result).toBeDefined() expect(result.$lookup?.space).toBeNull() }) diff --git a/foundations/core/packages/core/src/__tests__/limiter-edge-cases.test.ts b/foundations/core/packages/core/src/__tests__/limiter-edge-cases.test.ts index 395e3fbfe8..83dc3cdd72 100644 --- a/foundations/core/packages/core/src/__tests__/limiter-edge-cases.test.ts +++ b/foundations/core/packages/core/src/__tests__/limiter-edge-cases.test.ts @@ -356,13 +356,12 @@ describe('RateLimiter and TimeRateLimiter - Advanced Edge Cases', () => { let executionCount = 0 - const nestedOp = async (id: number): Promise => { - return await innerLimiter.exec(async () => { + const nestedOp = async (id: number): Promise => + await innerLimiter.exec(async () => { executionCount++ await new Promise((resolve) => setTimeout(resolve, 5)) return id }) - } const results = await Promise.all([ outerLimiter.exec(async () => await nestedOp(1)), diff --git a/foundations/core/packages/core/src/__tests__/limits.test.ts b/foundations/core/packages/core/src/__tests__/limits.test.ts index 2bfc263c15..6a4ca1cd8a 100644 --- a/foundations/core/packages/core/src/__tests__/limits.test.ts +++ b/foundations/core/packages/core/src/__tests__/limits.test.ts @@ -365,9 +365,7 @@ describe('TimeRateLimiter', () => { describe('arguments passing', () => { it('should pass arguments to operation', async () => { const limiter = new TimeRateLimiter(2, 1000) - const mockFn = jest.fn().mockImplementation(async (args?: any) => { - return args?.value - }) + const mockFn = jest.fn().mockImplementation(async (args?: any) => args?.value) const result = await limiter.exec(mockFn, { value: 42 }) diff --git a/foundations/core/packages/core/src/__tests__/memdb.test.ts b/foundations/core/packages/core/src/__tests__/memdb.test.ts index a9b2c34515..304b79b0ef 100644 --- a/foundations/core/packages/core/src/__tests__/memdb.test.ts +++ b/foundations/core/packages/core/src/__tests__/memdb.test.ts @@ -47,7 +47,7 @@ class ClientModel extends ModelDb implements Client { return this } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -55,7 +55,7 @@ class ClientModel extends ModelDb implements Client { return (await this.findAll(_class, query, options)).shift() } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -73,7 +73,7 @@ class ClientModel extends ModelDb implements Client { } } - async * iterateAll( + async *iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -85,7 +85,7 @@ class ClientModel extends ModelDb implements Client { limit: options?.limit ?? 500, cursor }) - yield * page.docs + yield* page.docs cursor = page.nextCursor } while (cursor !== undefined) } @@ -94,7 +94,7 @@ class ClientModel extends ModelDb implements Client { return { docs: [] } } - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions diff --git a/foundations/core/packages/core/src/__tests__/rate-limiter.test.ts b/foundations/core/packages/core/src/__tests__/rate-limiter.test.ts index 5ae22898a3..c96a76e21b 100644 --- a/foundations/core/packages/core/src/__tests__/rate-limiter.test.ts +++ b/foundations/core/packages/core/src/__tests__/rate-limiter.test.ts @@ -118,9 +118,7 @@ describe('RateLimiter', () => { it('should pass arguments to operations', async () => { const limiter = new RateLimiter(1) - const mockFn = jest.fn().mockImplementation(async (args?: any) => { - return args?.value - }) + const mockFn = jest.fn().mockImplementation(async (args?: any) => args?.value) const result = await limiter.exec(mockFn, { value: 42 }) diff --git a/foundations/core/packages/core/src/__tests__/time.test.ts b/foundations/core/packages/core/src/__tests__/time.test.ts index f2d756cd13..7c663c99ca 100644 --- a/foundations/core/packages/core/src/__tests__/time.test.ts +++ b/foundations/core/packages/core/src/__tests__/time.test.ts @@ -13,7 +13,7 @@ // limitations under the License. // -import { type Timestamp } from '../classes' +import type { Timestamp } from '../classes' import { getDay, convertToDay } from '..' const supportedTimezones: string[] = [ diff --git a/foundations/core/packages/core/src/backup.ts b/foundations/core/packages/core/src/backup.ts index 348a6606d3..46872618f1 100644 --- a/foundations/core/packages/core/src/backup.ts +++ b/foundations/core/packages/core/src/backup.ts @@ -1,5 +1,5 @@ -import { type Doc, type Domain, type Ref } from './classes' -import { type DocInfo } from './server' +import type { Doc, Domain, Ref } from './classes' +import type { DocInfo } from './server' /** * @public diff --git a/foundations/core/packages/core/src/benchmark.ts b/foundations/core/packages/core/src/benchmark.ts index 7ddd61f0d9..aee279f794 100644 --- a/foundations/core/packages/core/src/benchmark.ts +++ b/foundations/core/packages/core/src/benchmark.ts @@ -1,4 +1,4 @@ -import { type Doc, type Domain } from './classes' +import type { Doc, Domain } from './classes' /** * @public @@ -8,10 +8,10 @@ export const DOMAIN_BENCHMARK = 'benchmark' as Domain export type BenchmarkDocRange = | number | { - // Or random in range - from: number - to: number - } + // Or random in range + from: number + to: number + } export interface BenchmarkDoc extends Doc { source?: string // Query fields to perform different set of workload diff --git a/foundations/core/packages/core/src/client.ts b/foundations/core/packages/core/src/client.ts index 6f8cfef228..eda8843d76 100644 --- a/foundations/core/packages/core/src/client.ts +++ b/foundations/core/packages/core/src/client.ts @@ -14,7 +14,7 @@ // import { Analytics } from '@hcengineering/analytics' -import { type BackupClient, type DocChunk } from './backup' +import type { BackupClient, DocChunk } from './backup' import { type Class, DOMAIN_MODEL, @@ -157,7 +157,7 @@ class ClientImpl implements Client, BackupClient { return this.model } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -171,13 +171,11 @@ class ClientImpl implements Client, BackupClient { // In case of mixin we need to create mixin proxies. // Update mixins & lookups - const result = data.map((v) => { - return this.hierarchy.updateLookupMixin(_class, v, options) - }) + const result = data.map((v) => this.hierarchy.updateLookupMixin(_class, v, options)) return toFindResult(result, data.total) } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -196,7 +194,7 @@ class ClientImpl implements Client, BackupClient { } } - async * iterateAll( + async *iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -215,7 +213,7 @@ class ClientImpl implements Client, BackupClient { } while (cursor !== undefined) } - private async findModelPage( + private async findModelPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -234,7 +232,7 @@ class ClientImpl implements Client, BackupClient { } } - private async findConnectionPage( + private async findConnectionPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -264,7 +262,7 @@ class ClientImpl implements Client, BackupClient { return await this.conn.domainRequest(ctx, params, options) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -409,8 +407,8 @@ export async function createClient ( txBuffer = undefined const oldOnConnect: - | ((event: ClientConnectEvent, lastTx: string | undefined, data: any) => Promise) - | undefined = conn.onConnect + | ((event: ClientConnectEvent, lastTx: string | undefined, data: any) => Promise) + | undefined = conn.onConnect conn.onConnect = async (event, _lastTx, data) => { console.log('Client: onConnect', event) if (event === ClientConnectEvent.Maintenance) { @@ -509,7 +507,7 @@ async function loadModel ( }) if (typeof window !== 'undefined') { - console.log('find' + (result.full ? 'full model' : 'model diff'), result.transactions.length, platformNowDiff(t)) + console.log(`find${result.full ? 'full model' : 'model diff'}`, result.transactions.length, platformNowDiff(t)) } if (result.full) { return { mode: 'upgrade', current: result.transactions, addition: [] } diff --git a/foundations/core/packages/core/src/clone.ts b/foundations/core/packages/core/src/clone.ts index 9d72405402..d576a7eba0 100644 --- a/foundations/core/packages/core/src/clone.ts +++ b/foundations/core/packages/core/src/clone.ts @@ -66,7 +66,7 @@ export function clone ( return new Date(obj.getTime()) } else if (typeOf === 'Array' || typeOf === 'Object') { const isArray = Array.isArray(obj) - const result: any = isArray ? [] : Object.assign({}, obj) + const result: any = isArray ? [] : { ...obj } for (const key in obj) { // include prototype properties const value = obj[key] @@ -78,10 +78,8 @@ export function clone ( result[key] = valClone } else if (type === 'Date') { result[key] = new Date(value.getTime()) - } else { - if (isArray) { - result[key] = value - } + } else if (isArray) { + result[key] = value } } if (typeOf === 'Object') { diff --git a/foundations/core/packages/core/src/component.ts b/foundations/core/packages/core/src/component.ts index 1b0ec6ef0e..ce5f6fc8ec 100644 --- a/foundations/core/packages/core/src/component.ts +++ b/foundations/core/packages/core/src/component.ts @@ -70,7 +70,7 @@ import type { Version } from './classes' import { AccountRole, TxAccessLevel } from './classes' -import { type Status, type StatusCategory } from './status' +import type { Status, StatusCategory } from './status' import type { Tx, TxApplyIf, diff --git a/foundations/core/packages/core/src/hierarchy.ts b/foundations/core/packages/core/src/hierarchy.ts index 32d055c7a4..dff9e8e557 100644 --- a/foundations/core/packages/core/src/hierarchy.ts +++ b/foundations/core/packages/core/src/hierarchy.ts @@ -52,46 +52,46 @@ export class Hierarchy { return handler } - as(doc: D, mixin: Ref>): M { + as (doc: D, mixin: Ref>): M { if ((doc as any)[PROXY_MIXIN_CLASS_KEY] === mixin) return doc as M return new Proxy(Hierarchy.toDoc(doc), this.getMixinProxyHandler(mixin)) as M } - asIf(doc: D | undefined, mixin: Ref>): M | undefined { + asIf (doc: D | undefined, mixin: Ref>): M | undefined { if (doc === undefined) { return undefined } return this.hasMixin(doc, mixin) ? this.as(doc, mixin) : undefined } - asIfArray(docs: D[], mixin: Ref>): M[] { + asIfArray (docs: D[], mixin: Ref>): M[] { return docs.map((it) => this.asIf(it, mixin)).filter((it) => it !== undefined) } - static toDoc(doc: D): D { + static toDoc (doc: D): D { return _toDoc(doc) } - static mixinClass(doc: D): Ref> | undefined { + static mixinClass (doc: D): Ref> | undefined { return _mixinClass(doc) } - static mixinOrClass(doc: D): Ref | Class> { + static mixinOrClass (doc: D): Ref | Class> { const m = _mixinClass(doc) return m ?? doc._class } - static hasMixin(doc: D, mixin: Ref>): boolean { + static hasMixin (doc: D, mixin: Ref>): boolean { const d = Hierarchy.toDoc(doc) return typeof (d as any)[mixin] === 'object' } - hasMixin(doc: D, mixin: Ref>): boolean { + hasMixin (doc: D, mixin: Ref>): boolean { return Hierarchy.hasMixin(doc, mixin) } - classHierarchyMixin( + classHierarchyMixin ( _class: Ref>, mixin: Ref>, filter?: (value: M) => boolean @@ -109,7 +109,7 @@ export class Hierarchy { } } - findClassOrMixinMixin(doc: Doc, mixin: Ref>): M | undefined { + findClassOrMixinMixin (doc: Doc, mixin: Ref>): M | undefined { const cc = this.classHierarchyMixin(doc._class, mixin) if (cc !== undefined) { return cc @@ -127,7 +127,7 @@ export class Hierarchy { } } - findMixinMixins(doc: Doc, mixin: Ref>): M[] { + findMixinMixins (doc: Doc, mixin: Ref>): M[] { const _doc = _toDoc(doc) const result: M[] = [] const resultSet = new Set() @@ -147,7 +147,7 @@ export class Hierarchy { return result } - findAllMixins(doc: Doc): Ref>[] { + findAllMixins (doc: Doc): Ref>[] { const _doc = _toDoc(doc) const resultSet = new Set>>() for (const [k, v] of Object.entries(_doc)) { @@ -192,7 +192,7 @@ export class Hierarchy { return result } - getClass(_class: Ref>): Class { + getClass (_class: Ref>): Class { const data = this.classifiers.get(_class) if (data === undefined || this.isInterface(data)) { throw new Error('class not found: ' + _class) @@ -200,7 +200,7 @@ export class Hierarchy { return data } - findClass(_class: Ref>): Class | undefined { + findClass (_class: Ref>): Class | undefined { const data = this.classifiers.get(_class) if (data === undefined || this.isInterface(data)) { return undefined @@ -208,7 +208,7 @@ export class Hierarchy { return data } - hasClass(_class: Ref>): boolean { + hasClass (_class: Ref>): boolean { const data = this.classifiers.get(_class) return !(data === undefined || this.isInterface(data)) @@ -334,14 +334,14 @@ export class Hierarchy { * Check if passed _class is derived from `from` class. * It will iterate over parents. */ - isDerived(_class: Ref>, from: Ref>): boolean { + isDerived (_class: Ref>, from: Ref>): boolean { return this.ancestors.get(_class)?.includes(from) ?? false } /** * Return first non interface/mixin parent */ - getBaseClass(_class: Ref>): Ref> { + getBaseClass (_class: Ref>): Ref> { let cl: Ref> | undefined = _class while (cl !== undefined) { const clz: Class = this.getClass(cl) @@ -355,7 +355,7 @@ export class Hierarchy { * Check if passed _class implements passed interfaces `from`. * It will check for class parents and their interfaces. */ - isImplements(_class: Ref>, from: Ref>): boolean { + isImplements (_class: Ref>, from: Ref>): boolean { let cl: Ref> | undefined = _class while (cl !== undefined) { const klazz: Class = this.getClass(cl) @@ -370,7 +370,7 @@ export class Hierarchy { /** * Check if interface extends passed interface. */ - private isExtends(extendsOrImplements: Ref>[], from: Ref>): boolean { + private isExtends (extendsOrImplements: Ref>[], from: Ref>): boolean { const result: Ref>[] = [] const toVisit = [...extendsOrImplements] while (toVisit.length > 0) { @@ -384,7 +384,7 @@ export class Hierarchy { return false } - getDescendants(_class: Ref>): Ref>[] { + getDescendants (_class: Ref>): Ref>[] { const data = this.descendants.get(_class) if (data === undefined) { throw new Error('descendants not found: ' + _class) @@ -571,7 +571,7 @@ export class Hierarchy { } } - updateLookupMixin( + updateLookupMixin ( _class: Ref>, result: WithLookup, options?: FindOptions diff --git a/foundations/core/packages/core/src/index.ts b/foundations/core/packages/core/src/index.ts index ddafa5c49d..5c3e4d97fb 100644 --- a/foundations/core/packages/core/src/index.ts +++ b/foundations/core/packages/core/src/index.ts @@ -33,17 +33,17 @@ export * from './objvalue' export * from './operations' export * from './operator' export * from './query' -export * from './server' +export type * from './server' export * from './storage' export * from './tx' export * from './utils' -export * from './backup' +export type * from './backup' export * from './status' export * from './clone' export * from './common' export * from './time' export * from './benchmark' export * from './collaborators' -export * from './versioning' +export type * from './versioning' export default core diff --git a/foundations/core/packages/core/src/lang.ts b/foundations/core/packages/core/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/foundations/core/packages/core/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/foundations/core/packages/core/src/memdb.ts b/foundations/core/packages/core/src/memdb.ts index 5a0896e919..13bd5b4f8b 100644 --- a/foundations/core/packages/core/src/memdb.ts +++ b/foundations/core/packages/core/src/memdb.ts @@ -62,7 +62,7 @@ export abstract class MemDb extends TxProcessor implements Storage { } } - private getByIdQuery(query: DocumentQuery, _class: Ref>): T[] { + private getByIdQuery (query: DocumentQuery, _class: Ref>): T[] { const result: T[] = [] if (typeof query._id === 'string') { const obj = this.objectById.get(query._id) as T @@ -77,7 +77,7 @@ export abstract class MemDb extends TxProcessor implements Storage { return result } - getObject(_id: Ref): T { + getObject (_id: Ref): T { const doc = this.objectById.get(_id) if (doc === undefined) { throw new PlatformError(new Status(Severity.ERROR, core.status.ObjectNotFound, { _id })) @@ -85,12 +85,12 @@ export abstract class MemDb extends TxProcessor implements Storage { return doc as T } - findObject(_id: Ref): T | undefined { + findObject (_id: Ref): T | undefined { const doc = this.objectById.get(_id) return doc as T } - private async getLookupValue( + private async getLookupValue ( _class: Ref>, doc: T, lookup: Lookup, @@ -120,7 +120,7 @@ export abstract class MemDb extends TxProcessor implements Storage { } } - private async getReverseLookupValue( + private async getReverseLookupValue ( doc: T, lookup: ReverseLookups, result: LookupData @@ -137,7 +137,7 @@ export abstract class MemDb extends TxProcessor implements Storage { } } - private async lookup(_class: Ref>, docs: T[], lookup: Lookup): Promise[]> { + private async lookup (_class: Ref>, docs: T[], lookup: Lookup): Promise[]> { const withLookup: WithLookup[] = [] for (const doc of docs) { const result: LookupData = {} @@ -147,7 +147,7 @@ export abstract class MemDb extends TxProcessor implements Storage { return withLookup } - private async fillAssociations(docs: T[], associations: AssociationQuery[]): Promise[]> { + private async fillAssociations (docs: T[], associations: AssociationQuery[]): Promise[]> { const withLookup: WithLookup[] = [] for (const doc of docs) { const result = await this.getAssociationValue(doc, associations) @@ -156,7 +156,7 @@ export abstract class MemDb extends TxProcessor implements Storage { return withLookup } - private async getAssociationValue( + private async getAssociationValue ( doc: T, associations: AssociationQuery[] ): Promise[]>> { @@ -179,7 +179,7 @@ export abstract class MemDb extends TxProcessor implements Storage { return result } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -219,7 +219,7 @@ export abstract class MemDb extends TxProcessor implements Storage { return toFindResult(res, total) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -231,7 +231,7 @@ export abstract class MemDb extends TxProcessor implements Storage { * Only in model find without lookups and sorting. * Do not clone results, so be aware modifications are not allowed. */ - findAllSync(_class: Ref>, query: DocumentQuery, options?: FindOptions): FindResult { + findAllSync (_class: Ref>, query: DocumentQuery, options?: FindOptions): FindResult { let result: WithLookup[] const baseClass = this.hierarchy.getBaseClass(_class) if ( diff --git a/foundations/core/packages/core/src/objvalue.ts b/foundations/core/packages/core/src/objvalue.ts index 8a7df8ed7a..9cdbdb79fa 100644 --- a/foundations/core/packages/core/src/objvalue.ts +++ b/foundations/core/packages/core/src/objvalue.ts @@ -1,5 +1,5 @@ import { PlatformError, Severity, Status } from '@hcengineering/platform' -import { type Doc } from './classes' +import type { Doc } from './classes' import { clone } from './clone' import core from './component' diff --git a/foundations/core/packages/core/src/operations.ts b/foundations/core/packages/core/src/operations.ts index 697ffb5655..aa1460a7b0 100644 --- a/foundations/core/packages/core/src/operations.ts +++ b/foundations/core/packages/core/src/operations.ts @@ -73,7 +73,7 @@ export class TxOperations implements Omit { await this.client.close() } - findAll( + findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions | undefined @@ -81,7 +81,7 @@ export class TxOperations implements Omit { return this.client.findAll(_class, query, options) } - findAllPage( + findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -89,7 +89,7 @@ export class TxOperations implements Omit { return this.client.findAllPage(_class, query, options) } - iterateAll( + iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -97,7 +97,7 @@ export class TxOperations implements Omit { return this.client.iterateAll(_class, query, options) } - findOne( + findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions | undefined @@ -105,7 +105,7 @@ export class TxOperations implements Omit { return this.client.findOne(_class, query, options) } - domainRequest(domain: OperationDomain, params: DomainParams): Promise> { + domainRequest (domain: OperationDomain, params: DomainParams): Promise> { return this.client.domainRequest(domain, params) } @@ -117,7 +117,7 @@ export class TxOperations implements Omit { return this.client.tx(tx) } - async createDoc( + async createDoc ( _class: Ref>, space: Ref, attributes: Data, @@ -137,7 +137,7 @@ export class TxOperations implements Omit { return tx.objectId } - async addCollection( + async addCollection ( _class: Ref>, space: Ref, attachedTo: Ref, @@ -158,10 +158,10 @@ export class TxOperations implements Omit { modifiedBy ) await this.tx(tx) - return tx.objectId as unknown as Ref

+ return tx.objectId } - async updateCollection( + async updateCollection ( _class: Ref>, space: Ref, objectId: Ref

, @@ -186,7 +186,7 @@ export class TxOperations implements Omit { return attachedTo } - async removeCollection( + async removeCollection ( _class: Ref>, space: Ref, objectId: Ref

, @@ -209,7 +209,7 @@ export class TxOperations implements Omit { return attachedTo } - updateDoc( + updateDoc ( _class: Ref>, space: Ref, objectId: Ref, @@ -222,7 +222,7 @@ export class TxOperations implements Omit { return this.tx(tx) } - removeDoc( + removeDoc ( _class: Ref>, space: Ref, objectId: Ref, @@ -233,7 +233,7 @@ export class TxOperations implements Omit { return this.tx(tx) } - createMixin( + createMixin ( objectId: Ref, objectClass: Ref>, objectSpace: Ref, @@ -254,7 +254,7 @@ export class TxOperations implements Omit { return this.tx(tx) } - updateMixin( + updateMixin ( objectId: Ref, objectClass: Ref>, objectSpace: Ref, @@ -275,7 +275,7 @@ export class TxOperations implements Omit { return this.tx(tx) } - async update( + async update ( doc: T, update: DocumentUpdate, retrieve?: boolean, @@ -331,7 +331,7 @@ export class TxOperations implements Omit { return await this.updateDoc(doc._class, doc.space, doc._id, update, retrieve, modifiedOn, modifiedBy) } - remove(doc: T, modifiedOn?: Timestamp, modifiedBy?: PersonId): Promise { + remove (doc: T, modifiedOn?: Timestamp, modifiedBy?: PersonId): Promise { if (this.client.getHierarchy().isDerived(doc._class, core.class.AttachedDoc)) { const adoc = doc as unknown as AttachedDoc return this.removeCollection( @@ -352,7 +352,7 @@ export class TxOperations implements Omit { return new ApplyOperations(this, scope, measure, derived ?? this.isDerived) } - async diffUpdate( + async diffUpdate ( doc: T, update: T | Data | DocumentUpdate, date?: Timestamp, @@ -376,7 +376,8 @@ export class TxOperations implements Omit { // We need to update fields if they are different. if (!this.getHierarchy().hasMixin(doc, mixin)) { - await this.createMixin(doc._id, doc._class, doc.space, mixin, raw as MixinData, modifiedOn, modifiedBy) + const mixinData = raw as MixinData> + await this.createMixin(doc._id, doc._class, doc.space, mixin, mixinData, modifiedOn, modifiedBy) TxProcessor.applyUpdate(this.getHierarchy().as(doc, mixin), raw) return doc } @@ -507,12 +508,12 @@ export class ApplyOperations extends TxOperations { super(txClient, ops.user, isDerived ?? false) } - match(_class: Ref>, query: DocumentQuery): ApplyOperations { + match (_class: Ref>, query: DocumentQuery): ApplyOperations { this.matches.push({ _class, query }) return this } - notMatch(_class: Ref>, query: DocumentQuery): ApplyOperations { + notMatch (_class: Ref>, query: DocumentQuery): ApplyOperations { this.notMatches.push({ _class, query }) return this } @@ -599,7 +600,7 @@ export class TxBuilder extends TxOperations { findOne: async (_class, query, options?) => undefined, findAll: async (_class, query, options?) => toFindResult([]), findAllPage: async (_class, query, options) => ({ docs: [] }), - iterateAll: async function * () {}, + iterateAll: async function* () {}, searchFulltext: async (query, options) => ({ docs: [] }), domainRequest: async (domain, params) => ({ domain, value: null as any }), tx: async (tx): Promise => { diff --git a/foundations/core/packages/core/src/operator.ts b/foundations/core/packages/core/src/operator.ts index ad3eab61b0..4a5c2f8c2c 100644 --- a/foundations/core/packages/core/src/operator.ts +++ b/foundations/core/packages/core/src/operator.ts @@ -40,17 +40,13 @@ function $push (document: Doc, keyval: Record): void { } else { arr.push(kvk) } + } else if (doc[key] === null || doc[key] === undefined) { + doc[key] = [kvk] + } else if (Array.isArray(doc[key])) { + doc[key].push(kvk) } else { - if (doc[key] === null || doc[key] === undefined) { - doc[key] = [kvk] - } else { - if (Array.isArray(doc[key])) { - doc[key].push(kvk) - } else { - Analytics.handleError(new Error(`invalid array value: ${JSON.stringify(doc[key])} `)) - doc[key] = [kvk] - } - } + Analytics.handleError(new Error(`invalid array value: ${JSON.stringify(doc[key])} `)) + doc[key] = [kvk] } } } @@ -210,6 +206,6 @@ export function isOperator (o: Record): boolean { */ export function _getOperator (name: string): _OperatorFunc { const operator = operators[name] - if (operator === undefined) throw new Error('unknown operator: ' + name) + if (operator === undefined) throw new Error(`unknown operator: ${name}`) return operator } diff --git a/foundations/core/packages/core/src/predicate.ts b/foundations/core/packages/core/src/predicate.ts index 7bd5d7138d..1844371a24 100644 --- a/foundations/core/packages/core/src/predicate.ts +++ b/foundations/core/packages/core/src/predicate.ts @@ -92,52 +92,38 @@ const predicates: Record = { const re = new RegExp(o.$regex, o.$options) return (docs) => execPredicate(docs, propertyKey, (value) => value.match(re) !== null) }, - $gt: (o, propertyKey) => { - return (docs) => execPredicate(docs, propertyKey, (value) => value > o) - }, - $gte: (o, propertyKey) => { - return (docs) => execPredicate(docs, propertyKey, (value) => value >= o) - }, - $lt: (o, propertyKey) => { - return (docs) => execPredicate(docs, propertyKey, (value) => value < o) - }, - $lte: (o, propertyKey) => { - return (docs) => execPredicate(docs, propertyKey, (value) => value <= o) - }, - $exists: (o, propertyKey) => { - return (docs) => execPredicate(docs, propertyKey, (value) => (value !== undefined) === o) - }, - $ne: (o, propertyKey) => { - // eslint-disable-next-line eqeqeq - return (docs) => execPredicate(docs, propertyKey, (value) => (o != null ? !deepEqual(o, value) : value != null)) - }, - $size: (o, propertyKey) => { - return (docs) => - execPredicate(docs, propertyKey, (value) => { - if (value == null) { - return false - } - if (!Array.isArray(value)) { - throw new Error('$size predicate requires array') - } - if (typeof o === 'number') { - return value.length === o - } - if (typeof o === 'object' && o.$gt !== undefined) { - return value.length > o.$gt - } - if (typeof o === 'object' && o.$gte !== undefined) { - return value.length >= o.$gte - } - if (typeof o === 'object' && o.$lt !== undefined) { - return value.length < o.$lt - } - if (typeof o === 'object' && o.$lte !== undefined) { - return value.length <= o.$lte - } + $gt: (o, propertyKey) => (docs) => execPredicate(docs, propertyKey, (value) => value > o), + $gte: (o, propertyKey) => (docs) => execPredicate(docs, propertyKey, (value) => value >= o), + $lt: (o, propertyKey) => (docs) => execPredicate(docs, propertyKey, (value) => value < o), + $lte: (o, propertyKey) => (docs) => execPredicate(docs, propertyKey, (value) => value <= o), + $exists: (o, propertyKey) => (docs) => execPredicate(docs, propertyKey, (value) => (value !== undefined) === o), + $ne: (o, propertyKey) => (docs) => + execPredicate(docs, propertyKey, (value) => (o != null ? !deepEqual(o, value) : value != null)), + $size: (o, propertyKey) => (docs) => + execPredicate(docs, propertyKey, (value) => { + if (value == null) { return false - }) - } + } + if (!Array.isArray(value)) { + throw new Error('$size predicate requires array') + } + if (typeof o === 'number') { + return value.length === o + } + if (typeof o === 'object' && o.$gt !== undefined) { + return value.length > o.$gt + } + if (typeof o === 'object' && o.$gte !== undefined) { + return value.length >= o.$gte + } + if (typeof o === 'object' && o.$lt !== undefined) { + return value.length < o.$lt + } + if (typeof o === 'object' && o.$lte !== undefined) { + return value.length <= o.$lte + } + return false + }) } export function isPredicate (o: Record): boolean { @@ -153,7 +139,7 @@ export function createPredicates (o: Record, propertyKey: string): const result: Predicate[] = [] for (const key of keys) { const factory = predicates[key] - if (factory === undefined) throw new Error('unknown predicate: ' + keys[0]) + if (factory === undefined) throw new Error(`unknown predicate: ${keys[0]}`) result.push(factory(o[key], propertyKey)) } return result diff --git a/foundations/core/packages/core/src/proxy.ts b/foundations/core/packages/core/src/proxy.ts index d5ab1abde6..90bcd72b78 100644 --- a/foundations/core/packages/core/src/proxy.ts +++ b/foundations/core/packages/core/src/proxy.ts @@ -1,5 +1,5 @@ import { PlatformError, unknownError } from '@hcengineering/platform' -import { type Ref } from '.' +import type { Ref } from '.' import type { Doc, Mixin } from './classes' const PROXY_TARGET_KEY = '$___proxy_target' diff --git a/foundations/core/packages/core/src/query.ts b/foundations/core/packages/core/src/query.ts index 81f20d9a97..8f88c9b71f 100644 --- a/foundations/core/packages/core/src/query.ts +++ b/foundations/core/packages/core/src/query.ts @@ -1,10 +1,10 @@ -import { type DocumentQuery, type MemDb } from '.' -import { type Class, type Doc, type Enum, type EnumOf, type Ref } from './classes' +import type { DocumentQuery, MemDb } from '.' +import type { Class, Doc, Enum, EnumOf, Ref } from './classes' import core from './component' -import { type Hierarchy } from './hierarchy' +import type { Hierarchy } from './hierarchy' import { getObjectValue } from './objvalue' import { createPredicates, isPredicate } from './predicate' -import { type SortQuerySelector, type SortingOrder, type SortingQuery, type SortingRules } from './storage' +import type { SortQuerySelector, SortingOrder, SortingQuery, SortingRules } from './storage' /** * @public @@ -154,7 +154,7 @@ export function matchQuery ( query: DocumentQuery, clazz: Ref>, hierarchy: Hierarchy, - skipLookup: boolean = false + skipLookup = false ): Doc[] { const baseClass = hierarchy.getBaseClass(clazz) let result = docs.filter((r) => hierarchy.isDerived(r._class, baseClass)) @@ -184,7 +184,7 @@ export function checkMixinKey (key: string, clazz: Ref>, const attr = hierarchy.findAttribute(clazz, key) if (attr !== undefined && hierarchy.isMixin(attr.attributeOf)) { // It is mixin - key = attr.attributeOf + '.' + key + key = `${attr.attributeOf}.${key}` } } catch (err: any) { // ignore, if diff --git a/foundations/core/packages/core/src/server.ts b/foundations/core/packages/core/src/server.ts index a1515008ed..1da1e4ef45 100644 --- a/foundations/core/packages/core/src/server.ts +++ b/foundations/core/packages/core/src/server.ts @@ -14,8 +14,8 @@ // import type { Account, AccountRole, AccountUuid, Doc, Domain, PersonId, Ref } from './classes' -import { type MeasureContext } from '@hcengineering/measurements' -import { type DocumentQuery, type FindOptions } from './storage' +import type { MeasureContext } from '@hcengineering/measurements' +import type { DocumentQuery, FindOptions } from './storage' import type { DocumentUpdate, Tx } from './tx' import { PermissionsGrant, type WorkspaceIds } from './utils' @@ -66,11 +66,11 @@ export interface SessionData { hasDomainBroadcast?: boolean workspace: WorkspaceIds socialStringsToUsers: Map< - PersonId, - { - accontUuid: AccountUuid - role: AccountRole - } + PersonId, + { + accontUuid: AccountUuid + role: AccountRole + } > grant?: PermissionsGrant diff --git a/foundations/core/packages/core/src/status.ts b/foundations/core/packages/core/src/status.ts index 94937e1f6f..13a211f858 100644 --- a/foundations/core/packages/core/src/status.ts +++ b/foundations/core/packages/core/src/status.ts @@ -13,8 +13,8 @@ // limitations under the License. // -import { type Asset, type IntlString } from '@hcengineering/platform' -import { type Attribute, type Doc, type Domain, type Ref } from './classes' +import type { Asset, IntlString } from '@hcengineering/platform' +import type { Attribute, Doc, Domain, Ref } from './classes' /** * @public diff --git a/foundations/core/packages/core/src/storage.ts b/foundations/core/packages/core/src/storage.ts index 95d9aaaff1..fac6d1b305 100644 --- a/foundations/core/packages/core/src/storage.ts +++ b/foundations/core/packages/core/src/storage.ts @@ -22,17 +22,17 @@ import { VersionableDoc } from './versioning' export type ArraySizeSelector = | { - $gt: number - } + $gt: number + } | { - $lt: number - } + $lt: number + } | { - $gte: number - } + $gte: number + } | { - $lte: number - } + $lte: number + } /** * @public @@ -312,8 +312,8 @@ export interface SearchResultDoc { emojiIcon?: string score?: number doc: Pick & - Partial> & - Partial> + Partial> & + Partial> } /** diff --git a/foundations/core/packages/core/src/time.ts b/foundations/core/packages/core/src/time.ts index 52569d8eca..18297331de 100644 --- a/foundations/core/packages/core/src/time.ts +++ b/foundations/core/packages/core/src/time.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -import { type Timestamp } from './classes' +import type { Timestamp } from './classes' export function getDay (time: Timestamp): Timestamp { const date: Date = new Date(time) diff --git a/foundations/core/packages/core/src/tx.ts b/foundations/core/packages/core/src/tx.ts index 493c29b360..126c4157b6 100644 --- a/foundations/core/packages/core/src/tx.ts +++ b/foundations/core/packages/core/src/tx.ts @@ -149,15 +149,15 @@ export interface TxApplyResult { * @public */ export type MixinData = Omit & -PushOptions> & -IncOptions> + PushOptions> & + IncOptions> /** * @public */ export type MixinUpdate = Partial> & -PushOptions> & -IncOptions> + PushOptions> & + IncOptions> /** * Define Create/Update for mixin attributes. @@ -284,11 +284,11 @@ export interface SpaceUpdate { * @public */ export type DocumentUpdate = Partial> & -PushOptions & -SetEmbeddedOptions & -IncOptions & -UnsetOptions & -SpaceUpdate + PushOptions & + SetEmbeddedOptions & + IncOptions & + UnsetOptions & + SpaceUpdate /** * @public @@ -343,7 +343,7 @@ export abstract class TxProcessor implements WithTx { return result } - static createDoc2Doc(tx: TxCreateDoc, doClone = true): T { + static createDoc2Doc (tx: TxCreateDoc, doClone = true): T { const attached = tx.attachedTo !== undefined ? { @@ -367,7 +367,7 @@ export abstract class TxProcessor implements WithTx { } as T } - static updateDoc2Doc(rawDoc: T, tx: TxUpdateDoc): T { + static updateDoc2Doc (rawDoc: T, tx: TxUpdateDoc): T { const doc = _toDoc(rawDoc) TxProcessor.applyUpdate(doc, tx.operations as any) doc.modifiedBy = tx.modifiedBy @@ -375,7 +375,7 @@ export abstract class TxProcessor implements WithTx { return rawDoc } - static applyUpdate(doc: T, ops: any): void { + static applyUpdate (doc: T, ops: any): void { for (const key in ops) { if (key.startsWith('$')) { const operator = _getOperator(key) @@ -386,7 +386,7 @@ export abstract class TxProcessor implements WithTx { } } - static updateMixin4Doc(rawDoc: D, tx: TxMixin): D { + static updateMixin4Doc (rawDoc: D, tx: TxMixin): D { const ops = tx.attributes as any const doc = _toDoc(rawDoc) const mixin = (doc as any)[tx.mixin] ?? {} @@ -404,7 +404,7 @@ export abstract class TxProcessor implements WithTx { return rawDoc } - static buildDoc2Doc(txes: Tx[]): D | undefined | null { + static buildDoc2Doc (txes: Tx[]): D | undefined | null { let doc: Doc const deleteTx = txes.find((tx) => tx._class === core.class.TxRemoveDoc) if (deleteTx !== undefined) { @@ -435,17 +435,17 @@ export abstract class TxProcessor implements WithTx { ) } - static txHasUpdate(tx: TxUpdateDoc, attribute: string): boolean { + static txHasUpdate (tx: TxUpdateDoc, attribute: string): boolean { return TxProcessor.hasUpdate(tx.operations, attribute) } - static hasUpdate(ops: DocumentUpdate, attribute: string): boolean { + static hasUpdate (ops: DocumentUpdate, attribute: string): boolean { if ((ops as any)[attribute] !== undefined) return true for (const op in ops) { if (op.startsWith('$')) { const opValue = (ops as any)[op] for (const key in opValue) { - if (key === attribute || key.startsWith(attribute + '.')) { + if (key === attribute || key.startsWith(`${attribute}.`)) { return true } } @@ -454,10 +454,10 @@ export abstract class TxProcessor implements WithTx { return false } - protected abstract txCreateDoc (tx: TxCreateDoc): Promise - protected abstract txUpdateDoc (tx: TxUpdateDoc): Promise - protected abstract txRemoveDoc (tx: TxRemoveDoc): Promise - protected abstract txMixin (tx: TxMixin): Promise + protected abstract txCreateDoc(tx: TxCreateDoc): Promise + protected abstract txUpdateDoc(tx: TxUpdateDoc): Promise + protected abstract txRemoveDoc(tx: TxRemoveDoc): Promise + protected abstract txMixin(tx: TxMixin): Promise } /** @@ -467,12 +467,12 @@ export class TxFactory { private readonly txSpace: Ref constructor ( readonly account: PersonId, - readonly isDerived: boolean = false + readonly isDerived = false ) { this.txSpace = isDerived ? core.space.DerivedTx : core.space.Tx } - createTxCreateDoc( + createTxCreateDoc ( _class: Ref>, space: Ref, attributes: Data, @@ -494,7 +494,7 @@ export class TxFactory { } } - createTxCollectionCUD( + createTxCollectionCUD ( _class: Ref>, objectId: Ref, space: Ref, @@ -513,7 +513,7 @@ export class TxFactory { } } - createTxUpdateDoc( + createTxUpdateDoc ( _class: Ref>, space: Ref, objectId: Ref, @@ -536,7 +536,7 @@ export class TxFactory { } } - createTxRemoveDoc( + createTxRemoveDoc ( _class: Ref>, space: Ref, objectId: Ref, @@ -555,7 +555,7 @@ export class TxFactory { } } - createTxMixin( + createTxMixin ( objectId: Ref, objectClass: Ref>, objectSpace: Ref, @@ -585,7 +585,7 @@ export class TxFactory { notMatch: DocumentClassQuery[], txes: TxCUD[], measureName: string | undefined, - notify: boolean = true, + notify = true, extraNotify: Ref>[] = [], modifiedOn?: Timestamp, modifiedBy?: PersonId diff --git a/foundations/core/packages/core/src/utils.ts b/foundations/core/packages/core/src/utils.ts index 568c34a415..9d081b31a5 100644 --- a/foundations/core/packages/core/src/utils.ts +++ b/foundations/core/packages/core/src/utils.ts @@ -305,7 +305,7 @@ export class RateLimiter { notify: (() => void)[] = [] - async exec = any>(op: (args?: B) => Promise, args?: B): Promise { + async exec = any> (op: (args?: B) => Promise, args?: B): Promise { const processingId = this.idCounter++ while (this.processingQueue.size >= this.rate) { @@ -326,7 +326,7 @@ export class RateLimiter { } } - async add = any>( + async add = any> ( op: (args?: B) => Promise, args?: B, errHandler?: (err: any) => void @@ -556,10 +556,10 @@ export function includesAny (arr1: string[] | null | undefined, arr2: string[] | } export const isEnum = - (e: T) => - (token: any): token is T[keyof T] => { - return typeof token === 'string' && Object.values(e as Record).includes(token) - } + (e: T) => + (token: any): token is T[keyof T] => { + return typeof token === 'string' && Object.values(e as Record).includes(token) + } export async function checkPermission ( client: TxOperations, @@ -893,7 +893,7 @@ export class TimeRateLimiter { this.executions = this.executions.filter((time) => time.running || now - time.time < this.period) } - async exec = any>(op: (args?: B) => Promise, args?: B): Promise { + async exec = any> (op: (args?: B) => Promise, args?: B): Promise { while (this.active >= this.rate || this.executions.length >= this.rate) { this.cleanupExecutions() if (this.executions.length < this.rate) { diff --git a/foundations/core/packages/hulylake-client/.eslintrc.js b/foundations/core/packages/hulylake-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/hulylake-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/hulylake-client/eslint.config.mjs b/foundations/core/packages/hulylake-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/hulylake-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/hulylake-client/package.json b/foundations/core/packages/hulylake-client/package.json index 2dc08896f9..446f191e48 100644 --- a/foundations/core/packages/hulylake-client/package.json +++ b/foundations/core/packages/hulylake-client/package.json @@ -25,22 +25,22 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "cross-env": "~7.0.3", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "typescript": "^5.9.3", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/foundations/core/packages/hulylake-client/src/client.ts b/foundations/core/packages/hulylake-client/src/client.ts index af88ca5199..8445b55448 100644 --- a/foundations/core/packages/hulylake-client/src/client.ts +++ b/foundations/core/packages/hulylake-client/src/client.ts @@ -64,13 +64,13 @@ class WorkspaceClient implements HulylakeWorkspaceClient { return this.client.delete(this.workspace, key, retryOptions) } - public async getJson(key: string, retryOptions?: RetryOptions): Promise> { + public async getJson (key: string, retryOptions?: RetryOptions): Promise> { const res = await this.client.get(this.workspace, key, retryOptions) const body = res.ok && res.body != null ? ((await new Response(res.body).json()) as T) : undefined return { ...res, body } } - public async putJson( + public async putJson ( key: string, json: T, options?: Omit, diff --git a/foundations/core/packages/hulylake-client/src/index.ts b/foundations/core/packages/hulylake-client/src/index.ts index 0f078ded71..0ce0730482 100644 --- a/foundations/core/packages/hulylake-client/src/index.ts +++ b/foundations/core/packages/hulylake-client/src/index.ts @@ -14,4 +14,4 @@ // export * from './client' -export * from './types' +export type * from './types' diff --git a/foundations/core/packages/hulylake-client/src/types.ts b/foundations/core/packages/hulylake-client/src/types.ts index c9c53eb0d6..06a39598e9 100644 --- a/foundations/core/packages/hulylake-client/src/types.ts +++ b/foundations/core/packages/hulylake-client/src/types.ts @@ -77,18 +77,18 @@ export type HulyMeta = Record export type PutOptions = | { - mergeStrategy?: 'concatenate' - contentLength?: number - contentType?: string - headers?: HulyHeaders - meta?: HulyMeta - } + mergeStrategy?: 'concatenate' + contentLength?: number + contentType?: string + headers?: HulyHeaders + meta?: HulyMeta + } | { - mergeStrategy: 'jsonpatch' - contentLength?: number - headers?: HulyHeaders - meta?: HulyMeta - } + mergeStrategy: 'jsonpatch' + contentLength?: number + headers?: HulyHeaders + meta?: HulyMeta + } export interface PatchOptions { contentLength?: number diff --git a/foundations/core/packages/measurements-otlp/.eslintrc.js b/foundations/core/packages/measurements-otlp/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/measurements-otlp/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/measurements-otlp/eslint.config.mjs b/foundations/core/packages/measurements-otlp/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/measurements-otlp/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/measurements-otlp/package.json b/foundations/core/packages/measurements-otlp/package.json index d37d900bd8..66e24853bf 100644 --- a/foundations/core/packages/measurements-otlp/package.json +++ b/foundations/core/packages/measurements-otlp/package.json @@ -28,17 +28,17 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/measurements": "workspace:^0.7.19", diff --git a/foundations/core/packages/measurements-otlp/src/telemetry.ts b/foundations/core/packages/measurements-otlp/src/telemetry.ts index d8c7e71733..55adf342b4 100644 --- a/foundations/core/packages/measurements-otlp/src/telemetry.ts +++ b/foundations/core/packages/measurements-otlp/src/telemetry.ts @@ -189,7 +189,7 @@ export class OpenTelemetryMetricsContext implements MeasureContext { return headers } - with( + with ( name: string, params: ParamsType, op: (ctx: MeasureContext) => T | Promise, @@ -249,7 +249,7 @@ export class OpenTelemetryMetricsContext implements MeasureContext { } } - withSync( + withSync ( name: string, params: ParamsType, op: (ctx: MeasureContext) => T, diff --git a/foundations/core/packages/measurements/.eslintrc.js b/foundations/core/packages/measurements/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/measurements/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/measurements/eslint.config.mjs b/foundations/core/packages/measurements/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/measurements/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/measurements/package.json b/foundations/core/packages/measurements/package.json index aaea2dc14c..280555a407 100644 --- a/foundations/core/packages/measurements/package.json +++ b/foundations/core/packages/measurements/package.json @@ -28,17 +28,17 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "repository": { "type": "git", diff --git a/foundations/core/packages/measurements/src/context.ts b/foundations/core/packages/measurements/src/context.ts index 9a8688635c..6a2da671a8 100644 --- a/foundations/core/packages/measurements/src/context.ts +++ b/foundations/core/packages/measurements/src/context.ts @@ -147,7 +147,7 @@ export class MeasureMetricsContext implements MeasureContext { return result } - with( + with ( name: string, params: ParamsType, op: (ctx: MeasureContext) => T | Promise, @@ -186,7 +186,7 @@ export class MeasureMetricsContext implements MeasureContext { return {} } - withSync( + withSync ( name: string, params: ParamsType, op: (ctx: MeasureContext) => T, @@ -258,7 +258,7 @@ export class NoMetricsContext implements MeasureContext { return result } - with( + with ( name: string, params: ParamsType, op: (ctx: MeasureContext) => T | Promise, @@ -272,7 +272,7 @@ export class NoMetricsContext implements MeasureContext { return {} } - withSync( + withSync ( name: string, params: ParamsType, op: (ctx: MeasureContext) => T, @@ -282,7 +282,7 @@ export class NoMetricsContext implements MeasureContext { return op(c) } - withLog( + withLog ( name: string, params: ParamsType, op: (ctx: MeasureContext) => T | Promise, diff --git a/foundations/core/packages/model/.eslintrc.js b/foundations/core/packages/model/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/foundations/core/packages/model/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/model/eslint.config.mjs b/foundations/core/packages/model/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/foundations/core/packages/model/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/model/package.json b/foundations/core/packages/model/package.json index f457808a7b..f5ae667d57 100644 --- a/foundations/core/packages/model/package.json +++ b/foundations/core/packages/model/package.json @@ -19,21 +19,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "@types/toposort": "^2.0.3", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/foundations/core/packages/model/src/dsl.ts b/foundations/core/packages/model/src/dsl.ts index d8e086d15d..20d4957307 100644 --- a/foundations/core/packages/model/src/dsl.ts +++ b/foundations/core/packages/model/src/dsl.ts @@ -349,7 +349,7 @@ export class Builder { } // do we need this? - createDoc( + createDoc ( _class: Ref>, space: Ref, attributes: Data, @@ -366,7 +366,7 @@ export class Builder { return TxProcessor.createDoc2Doc(tx) } - mixin( + mixin ( objectId: Ref, objectClass: Ref>, mixin: Ref>, diff --git a/foundations/core/packages/platform/.eslintrc.js b/foundations/core/packages/platform/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/platform/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/platform/eslint.config.mjs b/foundations/core/packages/platform/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/platform/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/platform/package.json b/foundations/core/packages/platform/package.json index c0ac391099..9f8ae9cf9d 100644 --- a/foundations/core/packages/platform/package.json +++ b/foundations/core/packages/platform/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "typescript": "^5.9.3", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "intl-messageformat": "^10.7.14" @@ -61,8 +61,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" } } } diff --git a/foundations/core/packages/platform/src/__tests__/ident.test.ts b/foundations/core/packages/platform/src/__tests__/ident.test.ts index 784294b313..224c433fd6 100644 --- a/foundations/core/packages/platform/src/__tests__/ident.test.ts +++ b/foundations/core/packages/platform/src/__tests__/ident.test.ts @@ -60,11 +60,11 @@ describe('ident', () => { MyString: 'xxx' as StatusCode } }) - expect(f).toThrowError("'identify' overwrites") + expect(f).toThrow("'identify' overwrites") }) it('should fail to parse id', () => { - expect(() => _parseId('bad id' as Id)).toThrowError('ERROR: platform:status:InvalidId') + expect(() => _parseId('bad id' as Id)).toThrow('ERROR: platform:status:InvalidId') }) it('should parse id', () => { diff --git a/foundations/core/packages/platform/src/lang.ts b/foundations/core/packages/platform/src/lang.ts new file mode 100644 index 0000000000..ba3f17b9f1 --- /dev/null +++ b/foundations/core/packages/platform/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from './i18n' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/foundations/core/packages/platform/src/status.ts b/foundations/core/packages/platform/src/status.ts index 119308d396..201723b5e8 100644 --- a/foundations/core/packages/platform/src/status.ts +++ b/foundations/core/packages/platform/src/status.ts @@ -98,9 +98,9 @@ function isStatusLike (err: unknown): err is Pick void): Promise< -Client & -BackupClient & -FulltextStorage & { - isConnected: () => boolean - loadModel: (last: Timestamp, hash?: string) => Promise - pushHandler: (handler: TxHandler) => void -} + Client & + BackupClient & + FulltextStorage & { + isConnected: () => boolean + loadModel: (last: Timestamp, hash?: string) => Promise + pushHandler: (handler: TxHandler) => void + } > { const txes = genMinModel() @@ -89,7 +89,7 @@ FulltextStorage & { pushHandler (): void {} - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -99,7 +99,7 @@ FulltextStorage & { return await this.model.findAll(_class, query, options) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -107,7 +107,7 @@ FulltextStorage & { return (await this.findAll(_class, query, { ...options, limit: 1 })).shift() } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -125,7 +125,7 @@ FulltextStorage & { } } - async * iterateAll( + async *iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -137,7 +137,7 @@ FulltextStorage & { limit: options?.limit ?? 500, cursor }) - yield * page.docs + yield* page.docs cursor = page.nextCursor } while (cursor !== undefined) } diff --git a/foundations/core/packages/query/src/__tests__/query.test.ts b/foundations/core/packages/query/src/__tests__/query.test.ts index bd6ea9526c..7fea01fed4 100644 --- a/foundations/core/packages/query/src/__tests__/query.test.ts +++ b/foundations/core/packages/query/src/__tests__/query.test.ts @@ -930,7 +930,7 @@ describe('query', () => { const pp = await new Promise((resolve) => { liveQuery.query( test.class.ParticipantsHolder, - { participants: 'a' as Ref }, + { participants: 'a' }, (result) => { if (attempt > 0) { resolvePpv(result) diff --git a/foundations/core/packages/query/src/index.ts b/foundations/core/packages/query/src/index.ts index 4ad4e1d9f4..491c2a92ad 100644 --- a/foundations/core/packages/query/src/index.ts +++ b/foundations/core/packages/query/src/index.ts @@ -248,7 +248,7 @@ export class LiveQuery implements WithTx, Client { return true } - private createDumpQuery( + private createDumpQuery ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -261,7 +261,7 @@ export class LiveQuery implements WithTx, Client { return q } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -296,7 +296,7 @@ export class LiveQuery implements WithTx, Client { return toFindResult(q.result.getClone(), q.total) } - findAllPage( + findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -304,7 +304,7 @@ export class LiveQuery implements WithTx, Client { return this.client.findAllPage(_class, query, options) } - iterateAll( + iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -312,7 +312,7 @@ export class LiveQuery implements WithTx, Client { return this.client.iterateAll(_class, query, options) } - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -324,7 +324,7 @@ export class LiveQuery implements WithTx, Client { return this.client.searchFulltext(query, options) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -375,7 +375,7 @@ export class LiveQuery implements WithTx, Client { return deepEqual(q1, q2) } - private findQuery( + private findQuery ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -422,7 +422,7 @@ export class LiveQuery implements WithTx, Client { }, 0) } - private getQuery( + private getQuery ( _class: Ref>, query: DocumentQuery, callback: { @@ -449,7 +449,7 @@ export class LiveQuery implements WithTx, Client { return cq } - private createQuery( + private createQuery ( _class: Ref>, query: DocumentQuery, callback: { callback: (result: FindResult) => void, callbackId: string } | undefined, @@ -464,7 +464,7 @@ export class LiveQuery implements WithTx, Client { query: _query, result: result.then((docs) => new ResultArray(docs, this.getHierarchy())), total: 0, - options: options as FindOptions, + options, callbacks: new Map(), refresh: reduceCalls(() => this.doRefresh(q)), refreshId: 0 @@ -513,7 +513,7 @@ export class LiveQuery implements WithTx, Client { } } - query( + query ( _class: Ref>, query: DocumentQuery, callback: (result: FindResult) => void, @@ -547,7 +547,7 @@ export class LiveQuery implements WithTx, Client { } } - async queryFind( + async queryFind ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -1049,7 +1049,7 @@ export class LiveQuery implements WithTx, Client { return false } - private async getLookupValue( + private async getLookupValue ( _class: Ref>, doc: T, lookup: Lookup, @@ -1079,7 +1079,7 @@ export class LiveQuery implements WithTx, Client { } } - private async getReverseLookupValue( + private async getReverseLookupValue ( doc: T, lookup: ReverseLookups, result: LookupData @@ -1104,7 +1104,7 @@ export class LiveQuery implements WithTx, Client { } } - private async lookup(_class: Ref>, doc: T, lookup: Lookup): Promise { + private async lookup (_class: Ref>, doc: T, lookup: Lookup): Promise { const result: LookupData = {} await this.getLookupValue(_class, doc, lookup, result) ;(doc as WithLookup).$lookup = result @@ -1433,7 +1433,7 @@ export class LiveQuery implements WithTx, Client { const result: [string, string, string?][] = [] const hierarchy = this.client.getHierarchy() if (lookup._id !== undefined) { - for (const key in lookup._id) { + for (const key of Object.keys(lookup._id)) { const value = (lookup._id as any)[key] const [valueClass, reverseLookupKey] = Array.isArray(value) ? value : [value, 'attachedTo'] const clazz = hierarchy.isMixin(valueClass) ? hierarchy.getBaseClass(valueClass) : valueClass diff --git a/foundations/core/packages/query/src/refs.ts b/foundations/core/packages/query/src/refs.ts index a044270328..49d26c51c5 100644 --- a/foundations/core/packages/query/src/refs.ts +++ b/foundations/core/packages/query/src/refs.ts @@ -55,7 +55,7 @@ export class Refs { } } - public findFromDocs( + public findFromDocs ( _class: Ref>, query: DocumentQuery, options?: FindOptions diff --git a/foundations/core/packages/query/src/results.ts b/foundations/core/packages/query/src/results.ts index bc10576de8..a669b58ffb 100644 --- a/foundations/core/packages/query/src/results.ts +++ b/foundations/core/packages/query/src/results.ts @@ -37,7 +37,7 @@ export class ResultArray { return this.docs.get(_id) } - getClone(): T[] { + getClone (): T[] { return this.hierarchy.clone(this.getDocs()) } @@ -89,7 +89,7 @@ export class ResultArray { return undefined } - sort(_class: Ref>, sort: SortingQuery, hierarchy: Hierarchy, memdb: MemDb): void { + sort (_class: Ref>, sort: SortingQuery, hierarchy: Hierarchy, memdb: MemDb): void { const docs = Array.from(this.docs.values()) resultSort(docs, sort, _class, hierarchy, memdb) this.docs = new Map(docs.map((it) => [it._id, it])) diff --git a/foundations/core/packages/rank/.eslintrc.js b/foundations/core/packages/rank/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/rank/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/rank/eslint.config.mjs b/foundations/core/packages/rank/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/rank/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/rank/package.json b/foundations/core/packages/rank/package.json index 284a2182db..3f2d306d81 100644 --- a/foundations/core/packages/rank/package.json +++ b/foundations/core/packages/rank/package.json @@ -25,19 +25,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint": "^9.39.5", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "typescript": "^5.9.3", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/foundations/core/packages/rank/src/index.ts b/foundations/core/packages/rank/src/index.ts index f6894a9426..d11989a1f6 100644 --- a/foundations/core/packages/rank/src/index.ts +++ b/foundations/core/packages/rank/src/index.ts @@ -13,5 +13,5 @@ // limitations under the License. // -export * from './types' +export type * from './types' export * from './utils' diff --git a/foundations/core/packages/retry/.eslintrc.js b/foundations/core/packages/retry/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/foundations/core/packages/retry/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/retry/eslint.config.mjs b/foundations/core/packages/retry/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/foundations/core/packages/retry/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/retry/package.json b/foundations/core/packages/retry/package.json index e81447e59f..dc0516d760 100644 --- a/foundations/core/packages/retry/package.json +++ b/foundations/core/packages/retry/package.json @@ -19,20 +19,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "files": [ "lib/**/*", diff --git a/foundations/core/packages/rpc/.eslintrc.js b/foundations/core/packages/rpc/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/rpc/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/rpc/eslint.config.mjs b/foundations/core/packages/rpc/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/rpc/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/rpc/package.json b/foundations/core/packages/rpc/package.json index c86506d306..55834d6c51 100644 --- a/foundations/core/packages/rpc/package.json +++ b/foundations/core/packages/rpc/package.json @@ -26,19 +26,19 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/foundations/core/packages/rpc/src/rpc.ts b/foundations/core/packages/rpc/src/rpc.ts index cab4593d11..08dc996873 100644 --- a/foundations/core/packages/rpc/src/rpc.ts +++ b/foundations/core/packages/rpc/src/rpc.ts @@ -182,7 +182,7 @@ export class RPCHandler { * @param response - * @returns */ - readResponse(response: any, binary: boolean): Response { + readResponse (response: any, binary: boolean): Response { const data = this.protoDeserialize(response, binary) if (data.result !== undefined) { data.result = rpcJSONReceiver('result', data.result) @@ -195,7 +195,7 @@ export class RPCHandler { * @param request - * @returns */ - readRequest

(request: any, binary: boolean): Request

{ + readRequest

(request: any, binary: boolean): Request

{ const result: Request

= this.protoDeserialize(request, binary) if (typeof result.method !== 'string') { throw new PlatformError(new Status(Severity.ERROR, platform.status.BadRequest, {})) diff --git a/foundations/core/packages/rpc/src/sliding.ts b/foundations/core/packages/rpc/src/sliding.ts index 15ffbfa275..7e149d1a84 100644 --- a/foundations/core/packages/rpc/src/sliding.ts +++ b/foundations/core/packages/rpc/src/sliding.ts @@ -2,12 +2,12 @@ import type { RateLimitInfo } from './rpc' export class SlidingWindowRateLimitter { private readonly rateLimits = new Map< - string, - { - requests: number[] - rejectedRequests: number // Counter for rejected requests - resetTime: number - } + string, + { + requests: number[] + rejectedRequests: number // Counter for rejected requests + resetTime: number + } >() constructor ( diff --git a/foundations/core/packages/storage-client/.eslintrc.js b/foundations/core/packages/storage-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/storage-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/storage-client/eslint.config.mjs b/foundations/core/packages/storage-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/storage-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/storage-client/package.json b/foundations/core/packages/storage-client/package.json index 68adde2d16..5ca900d3e3 100644 --- a/foundations/core/packages/storage-client/package.json +++ b/foundations/core/packages/storage-client/package.json @@ -27,19 +27,20 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26" diff --git a/foundations/core/packages/storage-client/src/index.ts b/foundations/core/packages/storage-client/src/index.ts index 0f078ded71..0ce0730482 100644 --- a/foundations/core/packages/storage-client/src/index.ts +++ b/foundations/core/packages/storage-client/src/index.ts @@ -14,4 +14,4 @@ // export * from './client' -export * from './types' +export type * from './types' diff --git a/foundations/core/packages/storage/.eslintrc.js b/foundations/core/packages/storage/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/foundations/core/packages/storage/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/storage/eslint.config.mjs b/foundations/core/packages/storage/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/foundations/core/packages/storage/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/storage/package.json b/foundations/core/packages/storage/package.json index e4d9955800..b9c5939e37 100644 --- a/foundations/core/packages/storage/package.json +++ b/foundations/core/packages/storage/package.json @@ -19,20 +19,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/foundations/core/packages/text-core/.eslintrc.js b/foundations/core/packages/text-core/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/text-core/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/text-core/eslint.config.mjs b/foundations/core/packages/text-core/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/text-core/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/text-core/package.json b/foundations/core/packages/text-core/package.json index 3bbd37fd39..ecc52ae9e3 100644 --- a/foundations/core/packages/text-core/package.json +++ b/foundations/core/packages/text-core/package.json @@ -25,21 +25,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/markdown-it": "~13.0.0", - "jest-environment-jsdom": "^30.2.0", - "eslint-plugin-svelte": "^2.35.1" + "jest-environment-jsdom": "^30.4.1", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/foundations/core/packages/text-html/.eslintrc.js b/foundations/core/packages/text-html/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/text-html/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/text-html/eslint.config.mjs b/foundations/core/packages/text-html/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/text-html/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/text-html/package.json b/foundations/core/packages/text-html/package.json index bd54a02794..fbc0416dd3 100644 --- a/foundations/core/packages/text-html/package.json +++ b/foundations/core/packages/text-html/package.json @@ -25,23 +25,23 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/text-core": "workspace:^0.7.19", - "htmlparser2": "^9.0.0" + "htmlparser2": "~10.1.0" }, "repository": { "type": "git", diff --git a/foundations/core/packages/text-markdown/.eslintrc.js b/foundations/core/packages/text-markdown/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/foundations/core/packages/text-markdown/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/foundations/core/packages/text-markdown/eslint.config.mjs b/foundations/core/packages/text-markdown/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/foundations/core/packages/text-markdown/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/foundations/core/packages/text-markdown/package.json b/foundations/core/packages/text-markdown/package.json index 7ba6bb6c7c..7812f0517e 100644 --- a/foundations/core/packages/text-markdown/package.json +++ b/foundations/core/packages/text-markdown/package.json @@ -25,20 +25,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/markdown-it": "~13.0.0", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/text-core": "workspace:^0.7.19", diff --git a/foundations/core/packages/text-markdown/src/__tests__/compare.test.ts b/foundations/core/packages/text-markdown/src/__tests__/compare.test.ts new file mode 100644 index 0000000000..35359392b9 --- /dev/null +++ b/foundations/core/packages/text-markdown/src/__tests__/compare.test.ts @@ -0,0 +1,74 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { calcSørensenDiceCoefficient, normalizeMarkdown } from '../compare' + +describe('calcSørensenDiceCoefficient', () => { + it('returns zero for nullish inputs', () => { + expect(calcSørensenDiceCoefficient(null as unknown as string, 'text')).toBe(0) + expect(calcSørensenDiceCoefficient('text', undefined as unknown as string)).toBe(0) + }) + + it('returns one for identical strings after whitespace is removed', () => { + expect(calcSørensenDiceCoefficient('hello world', 'helloworld')).toBe(1) + expect(calcSørensenDiceCoefficient('', ' \n\t')).toBe(1) + }) + + it('returns zero when either distinct normalized string is shorter than two characters', () => { + expect(calcSørensenDiceCoefficient('a', 'b')).toBe(0) + expect(calcSørensenDiceCoefficient('a', 'ab')).toBe(0) + }) + + it('calculates the coefficient from shared bigrams', () => { + expect(calcSørensenDiceCoefficient('night', 'nacht')).toBe(0.25) + expect(calcSørensenDiceCoefficient('night', 'nacht')).toBe(calcSørensenDiceCoefficient('nacht', 'night')) + }) + + it('counts repeated bigrams no more often than they occur in both strings', () => { + expect(calcSørensenDiceCoefficient('aaaa', 'aa')).toBe(0.5) + expect(calcSørensenDiceCoefficient('abc', 'xyz')).toBe(0) + }) +}) + +describe('normalizeMarkdown', () => { + it('returns an empty string for nullish and non-string inputs', () => { + expect(normalizeMarkdown(null as unknown as string)).toBe('') + expect(normalizeMarkdown(undefined as unknown as string)).toBe('') + expect(normalizeMarkdown(123 as unknown as string)).toBe('') + expect(normalizeMarkdown({} as unknown as string)).toBe('') + }) + + it('normalizes line endings and removes empty lines and trailing whitespace', () => { + expect(normalizeMarkdown('line1 \r\n \rline2 \n\nline3')).toBe('line1\nline2\nline3') + }) + + it('sorts HTML attributes and normalizes void elements to self-closing tags', () => { + expect(normalizeMarkdown('test')).toBe( + 'test' + ) + expect(normalizeMarkdown('')).toBe('') + }) + + it('keeps non-void tags open and preserves their normalized attributes', () => { + expect(normalizeMarkdown("

")).toBe('
') + }) + + it('normalizes markdown containing text and HTML tags', () => { + const source = 'Text before\r\ntest \n\nText after ' + const expected = 'Text before\ntest\nText after' + + expect(normalizeMarkdown(source)).toBe(expected) + }) +}) diff --git a/foundations/core/packages/text-markdown/src/__tests__/markdown.test.ts b/foundations/core/packages/text-markdown/src/__tests__/markdown.test.ts index 1068e7b2ad..33f1481d5e 100644 --- a/foundations/core/packages/text-markdown/src/__tests__/markdown.test.ts +++ b/foundations/core/packages/text-markdown/src/__tests__/markdown.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-lines */ // // Copyright © 2025 Hardcore Engineering Inc. // @@ -1194,59 +1195,59 @@ describe('markdownToMarkup -> markupToMarkdown', () => { expect(serialized).toEqualMarkdown(alternate ?? markdown) }) }) -}) -describe('normalizeMarkdown', () => { - it('handles null and undefined inputs', () => { - expect(normalizeMarkdown(null as any)).toBe('') - expect(normalizeMarkdown(undefined as any)).toBe('') - expect(normalizeMarkdown('')).toBe('') - }) + describe('normalizeMarkdown', () => { + it('handles null and undefined inputs', () => { + expect(normalizeMarkdown(null as any)).toBe('') + expect(normalizeMarkdown(undefined as any)).toBe('') + expect(normalizeMarkdown('')).toBe('') + }) - it('handles non-string inputs', () => { - expect(normalizeMarkdown(123 as any)).toBe('') - expect(normalizeMarkdown({} as any)).toBe('') - expect(normalizeMarkdown([] as any)).toBe('') - }) + it('handles non-string inputs', () => { + expect(normalizeMarkdown(123 as any)).toBe('') + expect(normalizeMarkdown({} as any)).toBe('') + expect(normalizeMarkdown([] as any)).toBe('') + }) - it('normalizes line endings', () => { - expect(normalizeMarkdown('line1\r\nline2\rline3\nline4')).toBe('line1\nline2\nline3\nline4') - }) + it('normalizes line endings', () => { + expect(normalizeMarkdown('line1\r\nline2\rline3\nline4')).toBe('line1\nline2\nline3\nline4') + }) - it('removes trailing whitespace and empty lines', () => { - expect(normalizeMarkdown('line1 \n \nline2 \n\n\nline3')).toBe('line1\nline2\nline3') - }) + it('removes trailing whitespace and empty lines', () => { + expect(normalizeMarkdown('line1 \n \nline2 \n\n\nline3')).toBe('line1\nline2\nline3') + }) - it('normalizes HTML tag attributes', () => { - const input = 'test' - const expected = 'test' - expect(normalizeMarkdown(input)).toBe(expected) - }) + it('normalizes HTML tag attributes', () => { + const input = 'test' + const expected = 'test' + expect(normalizeMarkdown(input)).toBe(expected) + }) - it('handles void elements correctly', () => { - expect(normalizeMarkdown('')).toBe('') - expect(normalizeMarkdown('
')).toBe('
') - expect(normalizeMarkdown('
')).toBe('
') - }) + it('handles void elements correctly', () => { + expect(normalizeMarkdown('')).toBe('') + expect(normalizeMarkdown('
')).toBe('
') + expect(normalizeMarkdown('
')).toBe('
') + }) - it('handles non-void elements correctly', () => { - expect(normalizeMarkdown('
')).toBe('
') - expect(normalizeMarkdown('')).toBe('') - }) + it('handles non-void elements correctly', () => { + expect(normalizeMarkdown('
')).toBe('
') + expect(normalizeMarkdown('')).toBe('') + }) - it('sorts attributes alphabetically', () => { - const input = 'test' - const expected = 'test' - expect(normalizeMarkdown(input)).toBe(expected) - }) + it('sorts attributes alphabetically', () => { + const input = 'test' + const expected = 'test' + expect(normalizeMarkdown(input)).toBe(expected) + }) - it('handles attributes without values', () => { - expect(normalizeMarkdown('')).toBe('') - }) + it('handles attributes without values', () => { + expect(normalizeMarkdown('')).toBe('') + }) - it('handles mixed content', () => { - const input = 'Text before\r\ntest \n\nText after ' - const expected = 'Text before\ntest\nText after' - expect(normalizeMarkdown(input)).toBe(expected) + it('handles mixed content', () => { + const input = 'Text before\r\ntest \n\nText after ' + const expected = 'Text before\ntest\nText after' + expect(normalizeMarkdown(input)).toBe(expected) + }) }) }) diff --git a/foundations/core/packages/text-markdown/src/__tests__/serializer.test.ts b/foundations/core/packages/text-markdown/src/__tests__/serializer.test.ts new file mode 100644 index 0000000000..27b852b4ed --- /dev/null +++ b/foundations/core/packages/text-markdown/src/__tests__/serializer.test.ts @@ -0,0 +1,119 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { MarkupNode } from '@hcengineering/text-core' + +import { storeNodes } from '../serializer' + +const IMAGE_URL = 'https://files.example/' + +function escapeHtml (value: string): string { + return value + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') +} + +function serializeImage (attrs: Record): string { + const output: string[] = [] + const state = { + write: (content: string) => output.push(content), + esc: (value: string) => value, + htmlEsc: escapeHtml, + quote: (value: string) => '"' + value + '"', + imageUrl: IMAGE_URL + } as unknown as Parameters[0] + const node: MarkupNode = { type: 'image', attrs } as unknown as MarkupNode + const parent: MarkupNode = { type: 'doc', content: [] } as unknown as MarkupNode + + storeNodes.image(state, node, parent, 0) + + return output.join('') +} + +describe('storeNodes.image', () => { + it('serializes a token-backed image with its dimensions and title', () => { + expect( + serializeImage({ + 'file-id': 'file-123', + token: 'token-abc', + width: 320, + height: 180, + alt: 'Preview', + title: 'Screenshot' + }) + ).toBe('![Preview](https://files.example/file-123?file=file-123&width=320&height=180&token=token-abc "Screenshot")') + }) + + it('serializes a file-backed image with its dimensions', () => { + expect( + serializeImage({ + 'file-id': 'file-123', + width: 320, + height: 180, + alt: 'Preview' + }) + ).toBe('![Preview](https://files.example/file-123?file=file-123&width=320&height=180)') + }) + + it('serializes sized external images as HTML', () => { + expect( + serializeImage({ + src: 'https://images.example/preview.png', + width: 320, + height: 180, + alt: 'Preview' + }) + ).toBe('Preview') + }) + + it('serializes external images without dimensions as Markdown', () => { + expect( + serializeImage({ + src: 'https://images.example/preview.png', + alt: 'Preview', + title: 'Screenshot' + }) + ).toBe('![Preview](https://images.example/preview.png "Screenshot")') + }) + + it('encodes values added to file image URLs', () => { + expect( + serializeImage({ + 'file-id': 'file & id', + token: 'token&admin=true', + width: '320&height=1', + alt: 'Preview' + }) + ).toBe( + '![Preview](https://files.example/file%20%26%20id?file=file%20%26%20id&width=320%26height%3D1&token=token%26admin%3Dtrue)' + ) + }) + + it('HTML-escapes attributes of sized external images', () => { + expect( + serializeImage({ + src: 'https://images.example/preview.png?x="> - -Test component -{variable} diff --git a/foundations/utils/packages/ui-test/src/index.ts b/foundations/utils/packages/ui-test/src/index.ts deleted file mode 100644 index 9635092d52..0000000000 --- a/foundations/utils/packages/ui-test/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import Test from './component/Test.svelte' -export { Test } diff --git a/foundations/utils/packages/ui-test/src/svelte.d.ts_ b/foundations/utils/packages/ui-test/src/svelte.d.ts_ deleted file mode 100644 index 81cd9a1388..0000000000 --- a/foundations/utils/packages/ui-test/src/svelte.d.ts_ +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.svelte' { - import { SvelteComponentTyped } from 'svelte' - export default class extends SvelteComponentTyped {} -} diff --git a/foundations/utils/packages/ui-test/svelte.config.js b/foundations/utils/packages/ui-test/svelte.config.js deleted file mode 100644 index 28c0f0dcfb..0000000000 --- a/foundations/utils/packages/ui-test/svelte.config.js +++ /dev/null @@ -1,10 +0,0 @@ -const sveltePreprocess = require('svelte-preprocess') - -module.exports = { - preprocess: sveltePreprocess({ - scss: { - // This is expected as svelte-preprocess hasn't fully migrated to the modern API yet - silenceDeprecations: ['legacy-js-api'] - } - }) -}; diff --git a/foundations/utils/packages/ui-test/tsconfig.json b/foundations/utils/packages/ui-test/tsconfig.json deleted file mode 100644 index d815a54801..0000000000 --- a/foundations/utils/packages/ui-test/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./node_modules/@hcengineering/platform-rig/profiles/ui/tsconfig.json", - - "compilerOptions": { - "rootDir": "./src", - "outDir": "./lib", - "declarationDir": "./types", - "tsBuildInfoFile": ".build/build.tsbuildinfo" - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "lib", "dist", "types", "bundle"] -} diff --git a/foundations/utils/rush.json b/foundations/utils/rush.json index cd32bc43ce..76bf1427c3 100644 --- a/foundations/utils/rush.json +++ b/foundations/utils/rush.json @@ -340,11 +340,6 @@ "projectFolder": "packages/platform-rig", "reviewCategory": "tools", "shouldPublish": true - }, - { - "packageName": "@hcengineering/ui-test", - "projectFolder": "packages/ui-test", - "shouldPublish": false } ] } diff --git a/models/achievement/.eslintrc.js b/models/achievement/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/achievement/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/achievement/eslint.config.mjs b/models/achievement/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/achievement/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/achievement/package.json b/models/achievement/package.json index 7680f53870..5706239fae 100644 --- a/models/achievement/package.json +++ b/models/achievement/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/achievement": "workspace:^0.7.0", diff --git a/models/activity/.eslintrc.js b/models/activity/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/activity/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/activity/eslint.config.mjs b/models/activity/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/activity/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/activity/package.json b/models/activity/package.json index 8f19aaa12d..50a5b49c70 100644 --- a/models/activity/package.json +++ b/models/activity/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/activity/src/index.ts b/models/activity/src/index.ts index 5bc99c74b3..c72c6c823a 100644 --- a/models/activity/src/index.ts +++ b/models/activity/src/index.ts @@ -102,39 +102,39 @@ export class TIgnoreActivity extends TClass implements IgnoreActivity {} @Model(activity.class.ActivityMessage, core.class.AttachedDoc, DOMAIN_ACTIVITY) export class TActivityMessage extends TAttachedDoc implements ActivityMessage { @Prop(TypeBoolean(), activity.string.Pinned) - isPinned?: boolean + isPinned?: boolean @Prop(ArrOf(TypeRef(contact.class.Person)), contact.string.Person) - repliedPersons?: Ref[] + repliedPersons?: Ref[] @Prop(TypeTimestamp(), activity.string.LastReply) // @Index(IndexKind.Indexed) - lastReply?: Timestamp + lastReply?: Timestamp @Prop(Collection(activity.class.Reaction), activity.string.Reactions) - reactions?: number + reactions?: number @Prop(Collection(activity.class.ActivityMessage), activity.string.Replies) - replies?: number + replies?: number } @Model(activity.class.DocUpdateMessage, activity.class.ActivityMessage) export class TDocUpdateMessage extends TActivityMessage implements DocUpdateMessage { @Prop(TypeRef(core.class.Doc), core.string.Object) @Index(IndexKind.Indexed) - objectId!: Ref + objectId!: Ref @Prop(TypeRef(core.class.Class), core.string.Class) // @Index(IndexKind.Indexed) - objectClass!: Ref> + objectClass!: Ref> @Prop(TypeRef(core.class.TxCUD), core.string.Object) // @Index(IndexKind.Indexed) - txId?: Ref> + txId?: Ref> @Prop(TypeString(), core.string.Object) // @Index(IndexKind.Indexed) - action!: DocUpdateAction + action!: DocUpdateAction updateCollection?: string attributeUpdates?: DocAttributeUpdates @@ -145,11 +145,11 @@ export class TActivityReference extends TActivityMessage implements ActivityRefe // Source document we have reference from, it should be parent document for Comment/Message. @Prop(TypeRef(core.class.Doc), core.string.Object) // @Index(IndexKind.Indexed) - srcDocId!: Ref + srcDocId!: Ref @Prop(TypeRef(core.class.Class), core.string.Class) // @Index(IndexKind.Indexed) - srcDocClass!: Ref> + srcDocClass!: Ref> // Reference to comment/message in source doc attachedDocId?: Ref @@ -157,16 +157,16 @@ export class TActivityReference extends TActivityMessage implements ActivityRefe @Prop(TypeMarkup(), activity.string.Message) @Index(IndexKind.FullText) - message!: string + message!: string @Prop(TypeTimestamp(), activity.string.Edit) - editedOn?: Timestamp + editedOn?: Timestamp } @Model(activity.class.ActivityInfoMessage, activity.class.ActivityMessage) export class TActivityInfoMessage extends TActivityMessage implements ActivityInfoMessage { @Prop(TypeIntlString(), activity.string.Update) - message!: IntlString + message!: IntlString props!: Record icon!: Asset @@ -185,11 +185,11 @@ export class TActivityMessageControl extends TDoc implements ActivityMessageCont export class TDocUpdateMessageViewlet extends TDoc implements DocUpdateMessageViewlet { @Prop(TypeRef(core.class.Doc), core.string.Class) @Index(IndexKind.Indexed) - objectClass!: Ref> + objectClass!: Ref> @Prop(TypeString(), core.string.String) @Index(IndexKind.Indexed) - action!: DocUpdateAction + action!: DocUpdateAction label?: IntlString @@ -227,12 +227,12 @@ export class TReaction extends TAttachedDoc implements Reaction { declare attachedToClass: Ref> @Prop(TypeString(), activity.string.Emoji) - emoji!: string + emoji!: string image?: Ref @Prop(TypePersonId(), view.string.Created) - createBy!: PersonId + createBy!: PersonId } @Model(activity.class.SavedMessage, preference.class.Preference) diff --git a/models/ai-assistant/.eslintrc.js b/models/ai-assistant/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/ai-assistant/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/ai-assistant/eslint.config.mjs b/models/ai-assistant/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/ai-assistant/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/ai-assistant/package.json b/models/ai-assistant/package.json index 680b4b8c88..9bfee187d2 100644 --- a/models/ai-assistant/package.json +++ b/models/ai-assistant/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/model": "workspace:^0.7.17", diff --git a/models/ai-bot/.eslintrc.js b/models/ai-bot/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/ai-bot/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/ai-bot/eslint.config.mjs b/models/ai-bot/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/ai-bot/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/ai-bot/package.json b/models/ai-bot/package.json index 9620e9dfc5..18d62206a8 100644 --- a/models/ai-bot/package.json +++ b/models/ai-bot/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/ai-bot": "workspace:^0.7.0", diff --git a/models/all/.eslintrc.js b/models/all/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/all/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/all/eslint.config.mjs b/models/all/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/all/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/all/package.json b/models/all/package.json index 0547dbb11b..2234c1a6a5 100644 --- a/models/all/package.json +++ b/models/all/package.json @@ -22,21 +22,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "@types/node": "^24.13.3", "ts-node": "^10.9.2", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "esbuild": "^0.25.10", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/model": "workspace:^0.7.17", diff --git a/models/analytics-collector/.eslintrc.js b/models/analytics-collector/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/analytics-collector/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/analytics-collector/eslint.config.mjs b/models/analytics-collector/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/analytics-collector/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/analytics-collector/package.json b/models/analytics-collector/package.json index 529235963b..0e3763fe28 100644 --- a/models/analytics-collector/package.json +++ b/models/analytics-collector/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/analytics-collector/src/index.ts b/models/analytics-collector/src/index.ts index 76e681cf0b..446ddd79e9 100644 --- a/models/analytics-collector/src/index.ts +++ b/models/analytics-collector/src/index.ts @@ -38,29 +38,29 @@ export default analyticsCollector export class TOnboardingChannel extends TChannel implements OnboardingChannel { @Prop(TypeString(), analyticsCollector.string.UserName) @ReadOnly() - userName!: string + userName!: string @Prop(TypeAccountUuid(), analyticsCollector.string.Account) @ReadOnly() - account!: AccountUuid + account!: AccountUuid @Prop(TypeString(), analyticsCollector.string.WorkspaceName) @ReadOnly() - workspaceName!: string + workspaceName!: string @Prop(TypeString(), analyticsCollector.string.WorkspaceUrl) @ReadOnly() - workspaceUrl!: string + workspaceUrl!: string @Prop(TypeString(), analyticsCollector.string.WorkspaceId) @ReadOnly() - workspaceId!: WorkspaceUuid + workspaceId!: WorkspaceUuid @Prop(TypeBoolean(), analyticsCollector.string.DisableAIReplies) - disableAIReplies!: boolean + disableAIReplies!: boolean @Prop(TypeBoolean(), analyticsCollector.string.ShowAIReplies) - showAIReplies!: boolean + showAIReplies!: boolean } export function createModel (builder: Builder): void { diff --git a/models/attachment/.eslintrc.js b/models/attachment/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/attachment/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/attachment/eslint.config.mjs b/models/attachment/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/attachment/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/attachment/package.json b/models/attachment/package.json index 63787d9360..8f75279feb 100644 --- a/models/attachment/package.json +++ b/models/attachment/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/attachment/src/index.ts b/models/attachment/src/index.ts index f4adb00a12..82af6a6f01 100644 --- a/models/attachment/src/index.ts +++ b/models/attachment/src/index.ts @@ -55,26 +55,26 @@ export const DOMAIN_ATTACHMENT = 'attachment' as Domain export class TAttachment extends TAttachedDoc implements Attachment { @Prop(TypeString(), attachment.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeBlob(), attachment.string.File) - file!: Ref + file!: Ref @Prop(TypeString(), attachment.string.Size) - size!: number + size!: number @Prop(TypeString(), attachment.string.Type) - type!: string + type!: string @Prop(TypeTimestamp(), attachment.string.LastModified) - lastModified!: number + lastModified!: number @Prop(TypeString(), attachment.string.Description) @Index(IndexKind.FullText) - description!: string + description!: string @Prop(TypeBoolean(), attachment.string.Pinned) - pinned!: boolean + pinned!: boolean metadata?: AttachmentMetadata } @@ -98,15 +98,15 @@ export class TDrawing extends TDoc implements Drawing { @Prop(TypeRef(core.class.Doc), getEmbeddedLabel('Parent')) @Index(IndexKind.Indexed) @Hidden() - parent!: Ref + parent!: Ref @Prop(TypeRef(core.class.Class), getEmbeddedLabel('Parent class')) @Index(IndexKind.Indexed) @Hidden() - parentClass!: Ref> + parentClass!: Ref> @Prop(TypeString(), getEmbeddedLabel('Content')) - content?: string + content?: string } export function createModel (builder: Builder): void { diff --git a/models/billing/.eslintrc.js b/models/billing/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/billing/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/billing/eslint.config.mjs b/models/billing/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/billing/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/billing/package.json b/models/billing/package.json index 63e97b7c6d..f5ff16eb69 100644 --- a/models/billing/package.json +++ b/models/billing/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/bitrix/.eslintrc.js b/models/bitrix/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/bitrix/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/bitrix/eslint.config.mjs b/models/bitrix/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/bitrix/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/bitrix/package.json b/models/bitrix/package.json index 1882a891ac..e0d840cc84 100644 --- a/models/bitrix/package.json +++ b/models/bitrix/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/bitrix/src/index.ts b/models/bitrix/src/index.ts index fd78aec317..a70beb5ed4 100644 --- a/models/bitrix/src/index.ts +++ b/models/bitrix/src/index.ts @@ -65,18 +65,18 @@ export class TBitrixSyncDoc extends TDoc implements BitrixSyncDoc { @Prop(TypeString(), getEmbeddedLabel('BitrixId')) @ReadOnly() @Hidden() - bitrixId!: string + bitrixId!: string } @Model(bitrix.class.EntityMapping, core.class.Doc, DOMAIN_BITRIX) export class TBitrixEntityMapping extends TDoc implements BitrixEntityMapping { @Prop(TypeRef(core.class.Attribute), core.string.ClassPropertyLabel) - ofClass!: Ref> + ofClass!: Ref> type!: string @Prop(Collection(bitrix.class.FieldMapping), bitrix.string.FieldMapping) - fields!: number + fields!: number bitrixFields!: Fields comments!: boolean @@ -85,16 +85,16 @@ export class TBitrixEntityMapping extends TDoc implements BitrixEntityMapping { @Prop(ArrOf(TypeRef(core.class.Mixin)), core.string.Class) // If specified, will include this mixins in any case. - mixins!: Ref>[] + mixins!: Ref>[] } @Model(bitrix.class.FieldMapping, core.class.Doc, DOMAIN_BITRIX) export class TBitrixFieldMapping extends TAttachedDoc implements BitrixFieldMapping { @Prop(TypeRef(core.class.Attribute), core.string.ClassPropertyLabel) - ofClass!: Ref> + ofClass!: Ref> @Prop(TypeString(), core.string.ClassPropertyLabel) - attributeName!: Ref + attributeName!: Ref bitrixTitle!: string bitrixType!: string diff --git a/models/board/.eslintrc.js b/models/board/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/board/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/board/eslint.config.mjs b/models/board/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/board/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/board/package.json b/models/board/package.json index 1a6eaecc79..eacd548aee 100644 --- a/models/board/package.json +++ b/models/board/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/board/src/index.ts b/models/board/src/index.ts index 36054241d8..e9935b4101 100644 --- a/models/board/src/index.ts +++ b/models/board/src/index.ts @@ -89,30 +89,30 @@ export class TCommonBoardPreference extends TPreference implements CommonBoardPr export class TCard extends TTask implements Card { @Prop(TypeString(), board.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeBoolean(), board.string.IsArchived) - isArchived?: boolean + isArchived?: boolean @Prop(TypeMarkup(), board.string.Description) @Index(IndexKind.FullText) - description!: Markup + description!: Markup @Prop(TypeString(), board.string.Location) @Index(IndexKind.FullText) - location?: string + location?: string @Prop(TypeRef(contact.mixin.Employee), board.string.Assignee) declare assignee: Ref | null @Prop(ArrOf(TypeRef(contact.mixin.Employee)), board.string.Members) - members?: Ref[] + members?: Ref[] @Prop(TypeCardCover(), board.string.Cover) - cover?: CardCover + cover?: CardCover @Prop(TypeDate(), task.string.StartDate) - startDate!: Timestamp | null + startDate!: Timestamp | null @Prop(TypeRef(core.class.Status), task.string.TaskState, { _id: board.attribute.State }) declare status: Ref diff --git a/models/calendar/.eslintrc.js b/models/calendar/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/calendar/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/calendar/eslint.config.mjs b/models/calendar/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/calendar/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/calendar/package.json b/models/calendar/package.json index b4218b643e..d8ac544148 100644 --- a/models/calendar/package.json +++ b/models/calendar/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/calendar/src/index.ts b/models/calendar/src/index.ts index 7d94dfe7f8..99acbeb88b 100644 --- a/models/calendar/src/index.ts +++ b/models/calendar/src/index.ts @@ -105,15 +105,15 @@ export class TExternalCalendar extends TCalendar implements ExternalCalendar { export class TCalDavCalendar extends TExternalCalendar implements CalDavCalendar { @Prop(TypeString(), getEmbeddedLabel('CalDAV account key')) @Hidden() - accountKey!: string + accountKey!: string @Prop(TypeString(), getEmbeddedLabel('CalDAV collection href')) @Hidden() - href!: string + href!: string @Prop(TypeString(), getEmbeddedLabel('CalDAV collection ctag')) @Hidden() - ctag?: string + ctag?: string } @Model(calendar.class.Event, core.class.AttachedDoc, DOMAIN_EVENT) @@ -122,44 +122,44 @@ export class TEvent extends TAttachedDoc implements Event { declare space: Ref @Prop(TypeRef(calendar.class.Calendar), calendar.string.Calendar) - calendar!: Ref + calendar!: Ref eventId!: string @Prop(TypeString(), calendar.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeMarkup(), calendar.string.Description) @Index(IndexKind.FullText) - description!: Markup + description!: Markup @Prop(TypeString(), calendar.string.Location, { icon: calendar.icon.Location }) @Index(IndexKind.FullText) - location?: string + location?: string @Prop(TypeBoolean(), calendar.string.AllDay) @ReadOnly() - allDay!: boolean + allDay!: boolean @Prop(TypeDate(DateRangeMode.DATETIME), calendar.string.Date) - date!: Timestamp + date!: Timestamp @Prop(TypeDate(DateRangeMode.DATETIME), calendar.string.DueTo) - dueDate!: Timestamp + dueDate!: Timestamp @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(ArrOf(TypeRef(contact.class.Contact)), calendar.string.Participants) - participants!: Ref[] + participants!: Ref[] @Prop(ArrOf(TypeTimestamp()), calendar.string.Reminders) - reminders?: number[] + reminders?: number[] @Prop(ArrOf(TypeString()), calendar.string.ExternalParticipants) @Index(IndexKind.Indexed) - externalParticipants?: string[] + externalParticipants?: string[] access!: AccessLevel @@ -168,7 +168,7 @@ export class TEvent extends TAttachedDoc implements Event { timeZone?: string @Index(IndexKind.Indexed) - user!: PersonId + user!: PersonId blockTime!: boolean } diff --git a/models/card/.eslintrc.js b/models/card/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/card/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/card/eslint.config.mjs b/models/card/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/card/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/card/package.json b/models/card/package.json index 4033b336cb..fc4e3ea9b7 100644 --- a/models/card/package.json +++ b/models/card/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/card/src/index.ts b/models/card/src/index.ts index 8726893bb5..9b63775b1e 100644 --- a/models/card/src/index.ts +++ b/models/card/src/index.ts @@ -99,10 +99,10 @@ export class TMasterTag extends TClass implements MasterTag { removed?: boolean @Prop(TypeBoolean(), card.string.SingleColumn) - singleColumn?: boolean + singleColumn?: boolean @Prop(TypeBoolean(), card.string.BaseType) - baseType?: boolean + baseType?: boolean } @Model(card.class.Tag, core.class.Mixin) @@ -124,36 +124,36 @@ export class TCard extends TDoc implements Card { @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeCollaborativeDoc(), card.string.Content) - content!: MarkupBlobRef + content!: MarkupBlobRef blobs!: Blobs @Prop(TypeRef(card.class.Card), card.string.Parent) - parent?: Ref | null + parent?: Ref | null @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeRank(), core.string.Rank) @Hidden() - rank!: Rank + rank!: Rank @Prop(Collection(time.class.ToDo), getEmbeddedLabel('Action Items')) - todos?: CollectionSize + todos?: CollectionSize @Prop(TypeString(), view.string.Icon) @Hidden() - icon?: Asset + icon?: Asset @Prop(TypeNumber(), view.string.Color) @Hidden() - color?: number + color?: number @Hidden() - readonly?: boolean + readonly?: boolean children?: number @@ -161,17 +161,17 @@ export class TCard extends TDoc implements Card { @Hidden() @ReadOnly() - peerId?: string + peerId?: string @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number } @Model(card.class.CardSpace, core.class.TypedSpace, DOMAIN_SPACE) @UX(core.string.Space) export class TCardSpace extends TTypedSpace implements CardSpace { @Prop(ArrOf(TypeRef(card.class.MasterTag)), card.string.MasterTags) - types!: Ref[] + types!: Ref[] } @Model(card.class.MasterTagEditorSection, core.class.Doc, DOMAIN_MODEL) diff --git a/models/chat/eslint.config.mjs b/models/chat/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/chat/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/chat/package.json b/models/chat/package.json index a757d9d23e..44aed37a61 100644 --- a/models/chat/package.json +++ b/models/chat/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0" }, "dependencies": { "@hcengineering/card": "workspace:^0.7.0", diff --git a/models/chat/src/__tests__/migration.test.ts b/models/chat/src/__tests__/migration.test.ts index 4a7e6fabaf..c651059bb1 100644 --- a/models/chat/src/__tests__/migration.test.ts +++ b/models/chat/src/__tests__/migration.test.ts @@ -41,7 +41,7 @@ function createMockCard (id: string, parentInfo?: ParentInfo[]): Card { _class: 'card:class:Card' as any, title: `Card ${id}`, content: { __ref: 'blob1' } as any, - blobs: {} as any, + blobs: {}, rank: '1', space: 'space1' as any, modifiedBy: 'user1' as any, diff --git a/models/chunter/.eslintrc.js b/models/chunter/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/chunter/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/chunter/eslint.config.mjs b/models/chunter/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/chunter/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/chunter/package.json b/models/chunter/package.json index 7ea582a808..b03af9dce5 100644 --- a/models/chunter/package.json +++ b/models/chunter/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/chunter/src/migration.ts b/models/chunter/src/migration.ts index 87ed38f030..02d8bfc0df 100644 --- a/models/chunter/src/migration.ts +++ b/models/chunter/src/migration.ts @@ -172,7 +172,7 @@ async function removeBacklinks (client: MigrationClient): Promise { } await client.deleteMany(DOMAIN_ACTIVITY, { _class: activity.class.DocUpdateMessage, - objectClass: 'chunter:class:Backlink' as Ref> + objectClass: 'chunter:class:Backlink' }) } diff --git a/models/chunter/src/types.ts b/models/chunter/src/types.ts index d24001f8da..5a8cc36ea5 100644 --- a/models/chunter/src/types.ts +++ b/models/chunter/src/types.ts @@ -60,16 +60,16 @@ export const DOMAIN_CHUNTER = 'chunter' as Domain @Model(chunter.class.ChunterSpace, core.class.Space) export class TChunterSpace extends TSpace implements ChunterSpace { @Prop(PropCollection(activity.class.ActivityMessage), chunter.string.Messages) - messages?: number + messages?: number @Hidden() - __migratedToCard?: { + __migratedToCard?: { card: Ref space: Ref } @Hidden() - __migratedUntil?: Timestamp + __migratedUntil?: Timestamp } @Model(chunter.class.Channel, chunter.class.ChunterSpace) @@ -77,7 +77,7 @@ export class TChunterSpace extends TSpace implements ChunterSpace { export class TChannel extends TChunterSpace implements Channel { @Prop(TypeString(), chunter.string.Topic) @Index(IndexKind.FullText) - topic?: string + topic?: string } @Model(chunter.class.DirectMessage, chunter.class.ChunterSpace) @@ -89,15 +89,15 @@ export class TDirectMessage extends TChunterSpace implements DirectMessage {} export class TChatMessage extends TActivityMessage implements ChatMessage { @Prop(TypeMarkup(), chunter.string.Message) @Index(IndexKind.FullText) - message!: string + message!: string @Prop(PropCollection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeRef(contact.class.ChannelProvider), core.string.Object) - provider?: Ref + provider?: Ref } @Model(chunter.class.ThreadMessage, chunter.class.ChatMessage) @@ -113,22 +113,22 @@ export class TThreadMessage extends TChatMessage implements ThreadMessage { @Prop(TypeRef(core.class.Doc), core.string.Object) @Index(IndexKind.Indexed) - objectId!: Ref + objectId!: Ref @Prop(TypeRef(core.class.Class), core.string.Class) @Index(IndexKind.Indexed) - objectClass!: Ref> + objectClass!: Ref> } @Model(chunter.class.ChatMessageViewlet, core.class.Doc, DOMAIN_MODEL) export class TChatMessageViewlet extends TDoc implements ChatMessageViewlet { @Prop(TypeRef(core.class.Doc), core.string.Class) @Index(IndexKind.Indexed) - objectClass!: Ref> + objectClass!: Ref> @Prop(TypeRef(core.class.Doc), core.string.Class) @Index(IndexKind.Indexed) - messageClass!: Ref> + messageClass!: Ref> label?: IntlString onlyWithParent?: boolean diff --git a/models/communication/eslint.config.mjs b/models/communication/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/communication/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/communication/package.json b/models/communication/package.json index 7f2f287136..563ecfffc7 100644 --- a/models/communication/package.json +++ b/models/communication/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/card": "workspace:^0.7.0", diff --git a/models/contact/.eslintrc.js b/models/contact/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/contact/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/contact/eslint.config.mjs b/models/contact/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/contact/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/contact/package.json b/models/contact/package.json index e46a737292..c018d8cdff 100644 --- a/models/contact/package.json +++ b/models/contact/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/contact/src/index.ts b/models/contact/src/index.ts index 8eee6fdbc8..e749843cd9 100644 --- a/models/contact/src/index.ts +++ b/models/contact/src/index.ts @@ -131,37 +131,37 @@ export class TSocialIdentityProvider extends TDoc implements SocialIdentityProvi export class TContact extends TDoc implements Contact { @Prop(TypeString(), contact.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeString(), contact.string.Avatar) @Hidden() - avatarType!: AvatarType + avatarType!: AvatarType @Prop(TypeBlob(), contact.string.Avatar) @Hidden() - avatar!: Ref | null | undefined + avatar!: Ref | null | undefined @Prop(TypeRecord(), contact.string.Avatar) @Hidden() - avatarProps?: { + avatarProps?: { color?: string url?: string } @Prop(CollectionType(contact.class.Channel), contact.string.ContactInfo) - channels?: number + channels?: number @Prop(CollectionType(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(CollectionType(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number @Prop(TypeString(), contact.string.Location) @Index(IndexKind.FullText) - city?: string + city?: string } @Model(contact.class.Channel, core.class.AttachedDoc, DOMAIN_CHANNEL) @@ -169,16 +169,16 @@ export class TContact extends TDoc implements Contact { export class TChannel extends TAttachedDoc implements Channel { @Prop(TypeRef(contact.class.ChannelProvider), contact.string.ChannelProvider) @Index(IndexKind.Indexed) - provider!: Ref + provider!: Ref @Prop(TypeString(), contact.string.Value) @Index(IndexKind.FullText) - value!: string + value!: string items?: number @Prop(TypeTimestamp(), core.string.Modified) - lastMessage?: Timestamp + lastMessage?: Timestamp } @Model(contact.class.SocialIdentity, core.class.AttachedDoc, DOMAIN_CHANNEL) @@ -190,21 +190,21 @@ export class TSocialIdentity extends TAttachedDoc implements SocialIdentity { @Prop(TypeString(), getEmbeddedLabel('Key')) @Hidden() - key!: string + key!: string @Prop(TypeString(), contact.string.Type) - type!: SocialIdType + type!: SocialIdType @Prop(TypeString(), contact.string.Value) @Index(IndexKind.FullText) - value!: string + value!: string @Prop(TypeNumber(), contact.string.Confirmed) @ReadOnly() - verifiedOn?: number + verifiedOn?: number @Prop(TypeBoolean(), contact.string.Deleted) - isDeleted?: boolean + isDeleted?: boolean } @Model(contact.class.Person, contact.class.Contact) @@ -212,24 +212,24 @@ export class TSocialIdentity extends TAttachedDoc implements SocialIdentity { export class TPerson extends TContact implements Person { @Prop(TypeString(), getEmbeddedLabel('UUID')) @Hidden() - personUuid?: PersonUuid + personUuid?: PersonUuid @Prop(TypeDate(DateRangeMode.DATE, false), contact.string.Birthday) - birthday?: Timestamp + birthday?: Timestamp @Prop(CollectionType(contact.class.SocialIdentity), contact.string.SocialIds) - socialIds?: Collection + socialIds?: Collection @Prop(TypeRef(contact.class.UserProfile), contact.string.UserProfile) @ReadOnly() - profile?: Ref + profile?: Ref } @Model(contact.class.Member, core.class.AttachedDoc, DOMAIN_CONTACT) @UX(contact.string.Member, contact.icon.Person, undefined, 'name') export class TMember extends TAttachedDoc implements Member { @Prop(TypeRef(contact.class.Contact), contact.string.Contact) - contact!: Ref + contact!: Ref } @Model(contact.class.Organization, contact.class.Contact) @@ -237,10 +237,10 @@ export class TMember extends TAttachedDoc implements Member { export class TOrganization extends TContact implements Organization { @Prop(TypeCollaborativeDoc(), core.string.Description) @Index(IndexKind.FullText) - description!: MarkupBlobRef | null + description!: MarkupBlobRef | null @Prop(CollectionType(contact.class.Member), contact.string.Members) - members!: number + members!: number } @Model(contact.class.Status, core.class.AttachedDoc, DOMAIN_CONTACT) @@ -258,26 +258,26 @@ export class TEmployee extends TPerson implements Employee { @Prop(TypeBoolean(), contact.string.Active) @ReadOnly() @Hidden() - active!: boolean + active!: boolean @Prop(TypeString(), contact.string.Role) @ReadOnly() @Hidden() - role?: 'USER' | 'GUEST' + role?: 'USER' | 'GUEST' @Prop(CollectionType(contact.class.Status), contact.string.Status) @Hidden() - statuses?: number + statuses?: number @Prop(TypeString(), contact.string.Position) @Hidden() - position?: string | null + position?: string | null declare personUuid?: AccountUuid @Prop(TypeString(), contact.string.Timezone) @Hidden() - timezone?: string + timezone?: string } @Model(contact.class.ContactsTab, core.class.Doc, DOMAIN_MODEL) @@ -291,7 +291,7 @@ export class TContactsTab extends TDoc implements ContactsTab { export class TPersonSpace extends TSpace implements PersonSpace { @Prop(TypeRef(contact.class.Person), contact.string.Person) @Index(IndexKind.Indexed) - person!: Ref + person!: Ref } @Model(contact.class.UserRole, core.class.Doc, DOMAIN_ROLE) @@ -317,13 +317,13 @@ export class TWorkspaceMemberStatus extends TDoc implements WorkspaceMemberStatu @Prop(TypeAccountUuid(), core.string.Members) @Index(IndexKind.Indexed) - user!: AccountUuid + user!: AccountUuid @Prop(TypeString(), core.string.Description) - message!: string + message!: string @Prop(TypeTimestamp(), contact.string.StatusDueDate) - clearAt?: Timestamp + clearAt?: Timestamp } export function createModel (builder: Builder): void { diff --git a/models/controlled-documents/.eslintrc.js b/models/controlled-documents/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/controlled-documents/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/controlled-documents/eslint.config.mjs b/models/controlled-documents/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/controlled-documents/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/controlled-documents/package.json b/models/controlled-documents/package.json index 09495d40d9..47bf62ee23 100644 --- a/models/controlled-documents/package.json +++ b/models/controlled-documents/package.json @@ -19,20 +19,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", diff --git a/models/controlled-documents/src/types.ts b/models/controlled-documents/src/types.ts index ec58da6fd3..695f1ae266 100644 --- a/models/controlled-documents/src/types.ts +++ b/models/controlled-documents/src/types.ts @@ -116,7 +116,7 @@ export class TDocumentSpaceType extends TSpaceType implements DocumentSpaceType declare targetClass: Ref> @Prop(TypeBoolean(), getEmbeddedLabel('Projects')) - projects!: boolean + projects!: boolean } @Model(documents.class.DocumentSpaceTypeDescriptor, core.class.SpaceTypeDescriptor) @@ -140,23 +140,23 @@ export class TProject extends TDoc implements Project { @Prop(TypeString(), documents.string.Name) @Index(IndexKind.FullText) @ReadOnly() - name!: string + name!: string @Prop(TypeBoolean(), documents.string.Readonly) @ReadOnly() @Hidden() - readonly!: boolean + readonly!: boolean } @Model(documents.class.DocumentMeta, core.class.Doc, DOMAIN_DOCUMENTS) @UX(documents.string.ControlledDocument, documents.icon.Document) export class TDocumentMeta extends TDoc implements DocumentMeta { @Prop(Collection(documents.class.Document), documents.string.Documents) - documents!: CollectionSize + documents!: CollectionSize @Prop(TypeString(), documents.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string } @Model(documents.class.ProjectMeta, core.class.Doc, DOMAIN_DOCUMENTS) @@ -164,31 +164,31 @@ export class TDocumentMeta extends TDoc implements DocumentMeta { export class TProjectMeta extends TDoc implements ProjectMeta { @Prop(TypeRef(documents.class.Project), documents.string.Project) @Index(IndexKind.Indexed) - project!: Ref + project!: Ref @Prop(TypeRef(documents.class.DocumentMeta), documents.string.Document) @Index(IndexKind.Indexed) @Hidden() - meta!: Ref + meta!: Ref @Prop(ArrOf(TypeRef(documents.class.DocumentMeta)), documents.string.Path) - path!: Ref[] + path!: Ref[] @Prop(TypeRef(documents.class.DocumentMeta), documents.string.Parent) @Index(IndexKind.Indexed) - parent!: Ref + parent!: Ref // @Prop(TypeRef(documents.class.Document), documents.string.Document) // @Index(IndexKind.Indexed) // head!: Ref @Prop(Collection(documents.class.ProjectDocument), documents.string.Documents) - documents!: CollectionSize + documents!: CollectionSize @Prop(TypeRank(), core.string.Rank) @Index(IndexKind.Indexed) @Hidden() - rank!: Rank + rank!: Rank } @Model(documents.class.ProjectDocument, core.class.AttachedDoc, DOMAIN_DOCUMENTS) @@ -210,15 +210,15 @@ export class TProjectDocument extends TAttachedDoc implements ProjectDocument { @Prop(TypeRef(documents.class.Project), documents.string.Project) @Index(IndexKind.Indexed) - project!: Ref + project!: Ref @Prop(TypeRef(documents.class.Project), documents.string.Project) @Hidden() - initial!: Ref + initial!: Ref @Prop(TypeRef(documents.class.Document), documents.string.Document) @Index(IndexKind.Indexed) - document!: Ref + document!: Ref } @Model(documents.class.Document, core.class.Doc, DOMAIN_DOCUMENTS) @@ -231,64 +231,64 @@ export class TDocument extends TDoc implements Document { @Prop(TypeRef(documents.mixin.DocumentTemplate), documents.string.DocumentTemplate) @Hidden() - template?: Ref + template?: Ref @Prop(TypeString(), documents.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeString(), documents.string.Title) @Index(IndexKind.FullText) - code!: string + code!: string @Prop(TypeString(), documents.string.Code) @Index(IndexKind.FullText) - prefix!: string + prefix!: string @Prop(TypeNumber(), documents.string.Number) @Hidden() - seqNumber!: number + seqNumber!: number @Prop(TypeNumber(), documents.string.Major) - major!: number + major!: number @Prop(TypeNumber(), documents.string.Minor) - minor!: number + minor!: number @Prop(TypeRef(documents.class.DocumentCategory), documents.string.Category) - category?: Ref + category?: Ref @Prop(TypeRef(contact.mixin.Employee), documents.string.Author) - author?: Ref + author?: Ref @Prop(TypeRef(contact.mixin.Employee), documents.string.Owner) - owner?: Ref + owner?: Ref @Prop(TypeDocumentState(), documents.string.Status) - state!: DocumentState + state!: DocumentState @Prop(TypeCollaborativeDoc(), documents.string.CollaborativeDocument) - content!: MarkupBlobRef | null + content!: MarkupBlobRef | null @Prop(Collection(tags.class.TagReference), documents.string.Labels) - labels?: CollectionSize + labels?: CollectionSize @Prop(TypeString(), documents.string.MetaAbstract) @Index(IndexKind.FullText) - abstract?: string + abstract?: string @Prop(TypeNumber(), documents.string.Number) @Hidden() - commentSequence!: number + commentSequence!: number @Prop(Collection(documents.class.DocumentComment), chunter.string.Comments) - comments?: CollectionSize + comments?: CollectionSize @Prop(Collection(documents.class.DocumentSnapshot), documents.string.Snapshots) - snapshots?: CollectionSize + snapshots?: CollectionSize @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: CollectionSize + attachments?: CollectionSize } @Model(documents.class.HierarchyDocument, documents.class.Document) @@ -297,16 +297,16 @@ export class THierarchyDocument extends TDocument implements HierarchyDocument { @Prop(TypeRef(documents.class.DocumentMeta), core.string.AttachedTo) @Index(IndexKind.Indexed) @Hidden() - attachedTo!: Ref + attachedTo!: Ref @Prop(TypeRef(core.class.Class), core.string.AttachedToClass) @Index(IndexKind.Indexed) @Hidden() - attachedToClass!: Ref> + attachedToClass!: Ref> @Prop(TypeString(), core.string.Collection) @Hidden() - collection!: 'documents' + collection!: 'documents' } @Mixin(documents.mixin.DocumentTemplate, documents.class.Document) @@ -314,44 +314,44 @@ export class THierarchyDocument extends TDocument implements HierarchyDocument { export class TDocumentTemplate extends TDocument implements DocumentTemplate { @Prop(TypeNumber(), core.string.Collection) @Hidden() - sequence!: number + sequence!: number @Prop(TypeString(), documents.string.DocumentPrefix) @Index(IndexKind.FullText) - docPrefix!: string + docPrefix!: string } @Mixin(documents.mixin.DocumentTraining, documents.class.Document) @UX(training.string.Training, training.icon.Training) export class TDocumentTraining extends TDocument implements DocumentTraining { @Prop(TypeBoolean(), documents.string.DocumentTrainingEnabled, { defaultValue: false }) - enabled: boolean = false + enabled: boolean = false @Prop(TypeRef(training.class.Training), training.string.Training, { defaultValue: null }) - training: Ref | null = null + training: Ref | null = null @Prop(ArrOf(TypeRef(core.class.Role)), training.string.TrainingRequestRoles, { defaultValue: [] }) - roles: Array> = [] + roles: Array> = [] @Prop(ArrOf(TypeRef(contact.mixin.Employee)), training.string.TrainingRequestTrainees, { defaultValue: [] }) - trainees: TrainingRequest['trainees'] = [] + trainees: TrainingRequest['trainees'] = [] @Prop(TypeNumber(), training.string.TrainingRequestMaxAttempts, { defaultValue: null }) - maxAttempts: TrainingRequest['maxAttempts'] = null + maxAttempts: TrainingRequest['maxAttempts'] = null @Prop(TypeNumber(), documents.string.DocumentTrainingDueDays, { defaultValue: null }) - dueDays: number | null = null + dueDays: number | null = null } @Mixin(documents.mixin.DocumentAttachment, attachment.class.Attachment) export class TDocumentAttachment extends TAttachment implements DocumentAttachment { @Prop(TypeString(), getEmbeddedLabel('State')) @Hidden() - state?: DocumentAttachmentState + state?: DocumentAttachmentState @Prop(TypeRecord(), getEmbeddedLabel('DeletedIn')) @Hidden() - deletedIn?: { major: number, minor: number } + deletedIn?: { major: number, minor: number } } @Model(documents.class.DocumentCategory, core.class.Doc, DOMAIN_DOCUMENTS) @@ -364,18 +364,18 @@ export class TDocumentCategory extends TDoc implements DocumentCategory { @Prop(TypeString(), documents.string.Code) @Index(IndexKind.FullText) - code!: string + code!: string @Prop(TypeString(), documents.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeMarkup(), documents.string.Description) @Index(IndexKind.FullText) - description?: string + description?: string @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: CollectionSize + attachments?: CollectionSize } @Model(documents.class.ControlledDocument, documents.class.HierarchyDocument) @@ -390,39 +390,39 @@ export class TDocumentCategory extends TDoc implements DocumentCategory { export class TControlledDocument extends THierarchyDocument implements ControlledDocument { @Prop(Collection(documents.class.DocumentRequest), documents.string.Requests) @Hidden() - requests!: CollectionSize + requests!: CollectionSize @Prop(ArrOf(TypeRef(contact.mixin.Employee)), documents.string.Reviewers) - reviewers!: Ref[] + reviewers!: Ref[] @Prop(ArrOf(TypeRef(contact.mixin.Employee)), documents.string.Approvers) - approvers!: Ref[] + approvers!: Ref[] @Prop(ArrOf(TypeRef(contact.mixin.Employee)), documents.string.ExternalApprovers) - externalApprovers!: Ref[] + externalApprovers!: Ref[] @Prop(ArrOf(TypeRef(contact.mixin.Employee)), documents.string.CoAuthors) - coAuthors!: Ref[] + coAuthors!: Ref[] @Prop(TypeNumber(), documents.string.ReviewInterval) - reviewInterval?: number + reviewInterval?: number @Prop(TypeControlledDocumentState(), documents.string.ControlledStatus) - controlledState?: ControlledDocumentState + controlledState?: ControlledDocumentState @Prop(TypeDate(DateRangeMode.DATE), documents.string.EffectiveDate) - effectiveDate?: Timestamp + effectiveDate?: Timestamp @Prop(TypeDate(DateRangeMode.DATE), documents.string.PlannedEffectiveDate) @Hidden() - plannedEffectiveDate!: Timestamp + plannedEffectiveDate!: Timestamp @Prop(TypeRef(documents.class.Document), documents.string.ChangeControl) @Hidden() - changeControl!: Ref + changeControl!: Ref @Prop(Collection(time.class.ToDo), getEmbeddedLabel('Action Items')) - todos?: CollectionSize + todos?: CollectionSize } @Model(documents.class.ChangeControl, core.class.Doc, DOMAIN_DOCUMENTS) @@ -430,50 +430,50 @@ export class TControlledDocument extends THierarchyDocument implements Controlle export class TChangeControl extends TDoc implements ChangeControl { @Prop(TypeString(), documents.string.Description) @Index(IndexKind.FullText) - description!: string + description!: string @Prop(TypeString(), documents.string.Reason) @Index(IndexKind.FullText) - reason!: string + reason!: string @Prop(TypeString(), documents.string.ImpactAnalysis) - impact!: string + impact!: string @Prop(ArrOf(TypeRef(documents.class.Document)), documents.string.ImpactedDocuments) - impactedDocuments!: Ref[] + impactedDocuments!: Ref[] } @Model(documents.class.DocumentSnapshot, core.class.AttachedDoc, DOMAIN_DOCUMENTS) @UX(documents.string.Snapshot) export class TDocumentSnapshot extends TAttachedDoc implements DocumentSnapshot { @Prop(TypeString(), documents.string.Name) - name?: string + name?: string @Prop(TypeCollaborativeDoc(), documents.string.CollaborativeDocument) @Hidden() - content!: MarkupBlobRef | null + content!: MarkupBlobRef | null @Prop(TypeDocumentState(), documents.string.Status) - state?: DocumentState + state?: DocumentState } @Model(documents.class.ControlledDocumentSnapshot, documents.class.DocumentSnapshot) @UX(documents.string.ControlledSnapshot) export class TControlledDocumentSnapshot extends TDocumentSnapshot implements ControlledDocumentSnapshot { @Prop(TypeControlledDocumentState(), documents.string.Status) - controlledState!: ControlledDocumentState + controlledState!: ControlledDocumentState } @Model(documents.class.DocumentComment, chunter.class.ChatMessage) export class TDocumentComment extends TChatMessage implements DocumentComment { @Prop(TypeString(), documents.string.ID) - nodeId?: string + nodeId?: string @Prop(TypeBoolean(), documents.string.Resolve) - resolved?: boolean + resolved?: boolean @Prop(TypeNumber(), documents.string.Index) - index?: number + index?: number } @Model(documents.class.DocumentRequest, request.class.Request) diff --git a/models/converter/.eslintrc.js b/models/converter/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/converter/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/converter/eslint.config.mjs b/models/converter/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/converter/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/converter/package.json b/models/converter/package.json index 28b24ccef4..15c9519911 100644 --- a/models/converter/package.json +++ b/models/converter/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/core/.eslintrc.js b/models/core/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/core/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/core/eslint.config.mjs b/models/core/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/core/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/core/package.json b/models/core/package.json index 600c2cc635..7d7360a2dc 100644 --- a/models/core/package.json +++ b/models/core/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/core/src/core.ts b/models/core/src/core.ts index 2839685927..8aa7eb1d49 100644 --- a/models/core/src/core.ts +++ b/models/core/src/core.ts @@ -89,7 +89,7 @@ export class TObj implements Obj { @Prop(TypeRef(core.class.Class), core.string.ClassLabel) @Index(IndexKind.Indexed) @Hidden() - _class!: Ref> + _class!: Ref> } @Model(core.class.Doc, core.class.Obj) @@ -98,29 +98,29 @@ export class TDoc extends TObj implements Doc { @Prop(TypeRef(core.class.Doc), core.string.Id) @Hidden() // @Index(IndexKind.Indexed) // - automatically indexed by default. - _id!: Ref + _id!: Ref @Prop(TypeRef(core.class.Space), core.string.Space) @Index(IndexKind.Indexed) @Hidden() - space!: Ref + space!: Ref @Prop(TypeTimestamp(), core.string.ModifiedDate) @Index(IndexKind.Indexed) - modifiedOn!: Timestamp + modifiedOn!: Timestamp @Prop(TypePersonId(), core.string.ModifiedBy) @Index(IndexKind.Indexed) - modifiedBy!: PersonId + modifiedBy!: PersonId @Prop(TypePersonId(), core.string.CreatedBy) @Index(IndexKind.Indexed) - createdBy!: PersonId + createdBy!: PersonId @Prop(TypeTimestamp(), core.string.CreatedDate) @ReadOnly() @Index(IndexKind.IndexedDsc) - createdOn!: Timestamp + createdOn!: Timestamp } @Model(core.class.AttachedDoc, core.class.Doc) @@ -128,16 +128,16 @@ export class TAttachedDoc extends TDoc implements AttachedDoc { @Prop(TypeRef(core.class.Doc), core.string.AttachedTo) @Index(IndexKind.Indexed) @Hidden() - attachedTo!: Ref + attachedTo!: Ref @Prop(TypeRef(core.class.Class), core.string.AttachedToClass) @Index(IndexKind.Indexed) @Hidden() - attachedToClass!: Ref> + attachedToClass!: Ref> @Prop(TypeString(), core.string.Collection) @Hidden() - collection!: string + collection!: string } @Model(core.class.Association, core.class.Doc, DOMAIN_MODEL) @@ -169,16 +169,16 @@ export class TRelation extends TDoc implements Relation { export class TRelationMetadata extends TDoc implements RelationMetadata { @Prop(TypeRef(core.class.Class), core.string.Class) @Index(IndexKind.Indexed) - sourceClass!: Ref> + sourceClass!: Ref> @Prop(TypeRef(core.class.Class), core.string.TargetClass) - targetClass!: Ref> + targetClass!: Ref> @Prop(TypeString(), core.string.ClassPropertyLabel) - field!: string + field!: string @Prop(TypeString(), core.string.Description) - direction?: 'forward' | 'inverse' + direction?: 'forward' | 'inverse' } @Model(core.class.Blob, core.class.Doc, DOMAIN_BLOB) @@ -187,27 +187,27 @@ export class TBlob extends TDoc implements Blob { @Prop(TypeString(), core.string.Blob) @ReadOnly() // @Index(IndexKind.Indexed) - provider!: string + provider!: string @Prop(TypeString(), core.string.BlobContentType) @ReadOnly() - contentType!: string + contentType!: string @Prop(TypeString(), core.string.BlobStorageId) @ReadOnly() - storageId!: string + storageId!: string @Prop(TypeString(), core.string.BlobEtag) @ReadOnly() - etag!: string + etag!: string @Prop(TypeString(), core.string.BlobVersion) @ReadOnly() - version!: string + version!: string @Prop(TypeFileSize(), core.string.BlobSize) @ReadOnly() - size!: number + size!: number } @UX(core.string.ClassLabel) @@ -216,7 +216,7 @@ export class TClass extends TDoc implements Class { kind!: ClassifierKind @Prop(TypeIntlString(), core.string.ClassPropertyLabel) - label!: IntlString + label!: IntlString extends!: Ref> domain!: Domain @@ -381,16 +381,16 @@ export class TFullTextSearchContext extends TDoc implements FullTextSearchContex @MMixin(core.mixin.ConfigurationElement, core.class.Class) export class TConfigurationElement extends TClass implements ConfigurationElement { @Prop(TypeIntlString(), core.string.Private) - title!: IntlString + title!: IntlString @Prop(TypeIntlString(), core.string.Private) - group!: IntlString + group!: IntlString } @Model(core.class.Configuration, core.class.Doc, DOMAIN_CONFIGURATION) export class TConfiguration extends TDoc implements Configuration { @Prop(TypeBoolean(), core.string.Private) - enabled!: boolean + enabled!: boolean } @MMixin(core.mixin.IndexConfiguration, core.class.Class) @@ -415,14 +415,14 @@ export class TTypeRank extends TType {} @MMixin(core.mixin.TransientConfiguration, core.class.Class) export class TTransientConfiguration extends TClass implements TransientConfiguration { @Prop(TypeBoolean(), core.string.Private) - broadcastOnly!: boolean + broadcastOnly!: boolean } @Model(core.class.Sequence, core.class.Doc, DOMAIN_SEQUENCE) export class TSequence extends TDoc implements Sequence { @Prop(TypeRef(core.class.Class), core.string.AttachedTo) @Index(IndexKind.Indexed) - attachedTo!: Ref> + attachedTo!: Ref> sequence!: number } diff --git a/models/core/src/migration.ts b/models/core/src/migration.ts index e259d04abc..6ea1daf8f6 100644 --- a/models/core/src/migration.ts +++ b/models/core/src/migration.ts @@ -367,7 +367,7 @@ export async function getSocialKeyByOldAccount (client: MigrationClient): Promis if (systemAccounts.includes(account._id)) { socialKeyByAccount[account._id] = account._id } else { - socialKeyByAccount[account._id] = buildSocialIdString(getSocialKeyByOldEmail(account.email)) as any + socialKeyByAccount[account._id] = buildSocialIdString(getSocialKeyByOldEmail(account.email)) } } @@ -526,8 +526,8 @@ async function migrateAccounts (client: MigrationClient): Promise { accountUuidBySocialKey ) const update: MigrateUpdate = { - members: newMembers as any, - owners: newOwners as any + members: newMembers, + owners: newOwners } const type = spaceTypesById.get((space as TypedSpace).type) @@ -594,7 +594,7 @@ async function migrateAccounts (client: MigrationClient): Promise { objectClass: spaceType._class, objectSpace: spaceType.space, operations: { - members: newMembers as any + members: newMembers }, modifiedOn: Date.now(), createdBy: core.account.ConfigUser, @@ -843,7 +843,7 @@ async function processMigrateJsonForDoc ( const stat = await storageAdapter.stat(client.ctx, wsIds, currentYdocId) if (stat !== undefined) { const data = await storageAdapter.read(client.ctx, wsIds, currentYdocId) - const buffer = Buffer.concat(data as any) + const buffer = Buffer.concat(data) await storageAdapter.put(client.ctx, wsIds, ydocId, buffer, 'application/ydoc', buffer.length) } }) diff --git a/models/core/src/security.ts b/models/core/src/security.ts index be3c300db4..7dc576ac05 100644 --- a/models/core/src/security.ts +++ b/models/core/src/security.ts @@ -62,31 +62,31 @@ import { TAttachedDoc, TClass, TDoc } from './core' export class TSpace extends TDoc implements Space { @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeString(), core.string.Description) @Index(IndexKind.FullText) - description!: string + description!: string @Prop(TypeBoolean(), core.string.Private) - private!: boolean + private!: boolean @Prop(TypeBoolean(), core.string.Archived) @Index(IndexKind.Indexed) - archived!: boolean + archived!: boolean @Prop(ArrOf(TypeAccountUuid()), core.string.Members) @Index(IndexKind.Indexed) - members!: AccountUuid[] + members!: AccountUuid[] @Prop(ArrOf(TypeAccountUuid()), core.string.Owners) - owners?: AccountUuid[] + owners?: AccountUuid[] @Prop(TypeBoolean(), core.string.AutoJoin) - autoJoin?: boolean + autoJoin?: boolean @Prop(ArrOf(TypeString()), core.string.AutoJoinGuests) - autoJoinForRoles?: AccountRole[] + autoJoinForRoles?: AccountRole[] } @Model(core.class.SystemSpace, core.class.Space) @@ -97,7 +97,7 @@ export class TSystemSpace extends TSpace implements Space {} @UX(core.string.TypedSpace, undefined, undefined, 'name') export class TTypedSpace extends TSpace implements TypedSpace { @Prop(TypeRef(core.class.SpaceType), core.string.SpaceType) - type!: Ref + type!: Ref } @Model(core.class.SpaceTypeDescriptor, core.class.Doc, DOMAIN_MODEL) @@ -115,25 +115,25 @@ export class TSpaceTypeDescriptor extends TDoc implements SpaceTypeDescriptor { export class TSpaceType extends TDoc implements SpaceType { @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeString(), core.string.ShortDescription) - shortDescription?: string + shortDescription?: string @Prop(TypeRef(core.class.SpaceTypeDescriptor), core.string.Descriptor) - descriptor!: Ref + descriptor!: Ref @Prop(TypeRef(core.class.Class), core.string.TargetClass) - targetClass!: Ref> + targetClass!: Ref> @Prop(Collection(core.class.Role), core.string.Roles) - roles!: CollectionSize + roles!: CollectionSize @Prop(ArrOf(TypeAccountUuid()), core.string.Members) - members!: AccountUuid[] + members!: AccountUuid[] @Prop(TypeBoolean(), core.string.AutoJoin) - autoJoin?: boolean + autoJoin?: boolean } @Model(core.class.Role, core.class.AttachedDoc, DOMAIN_MODEL) @@ -155,10 +155,10 @@ export class TRole extends TAttachedDoc implements Role { @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(ArrOf(TypeRef(core.class.Permission)), core.string.Permission) - permissions!: Ref[] + permissions!: Ref[] } @Model(core.class.Permission, core.class.Doc, DOMAIN_MODEL) @@ -202,23 +202,23 @@ export class TTxAccessLevel extends TClass implements TxAccessLevel { @Model(core.class.ModulePermissionGroup, core.class.Doc, DOMAIN_MODEL) export class TModulePermissionGroup extends TDoc implements ModulePermissionGroup { @Prop(TypeRef(core.class.Doc), core.string.AttachedTo) - application!: Ref + application!: Ref @Prop(TypeString(), core.string.Roles) - role!: AccountRole + role!: AccountRole @Prop(ArrOf(TypeRef(core.class.Permission)), core.string.Permission) - permissions!: Ref[] + permissions!: Ref[] @Prop(ArrOf(TypeRef(core.class.Permission)), core.string.Permission) - disabledPermissions?: Ref[] + disabledPermissions?: Ref[] @Prop(TypeRef(core.class.Class), core.string.Class) - spaceClass!: Ref> + spaceClass!: Ref> @Prop(TypeBoolean(), core.string.Name) - enabled!: boolean + enabled!: boolean @Prop(TypeNumber(), core.string.Order) - order?: number + order?: number } diff --git a/models/core/src/status.ts b/models/core/src/status.ts index 58261593b7..299e3de17c 100644 --- a/models/core/src/status.ts +++ b/models/core/src/status.ts @@ -44,16 +44,16 @@ export class TStatus extends TDoc implements Status { ofAttribute!: Ref> @Prop(TypeRef(core.class.StatusCategory), core.string.StatusCategory) - category?: Ref + category?: Ref @Prop(TypeString(), core.string.Name) - name!: string + name!: string // @Prop(TypeNumber(), core.string.Color) color!: number @Prop(TypeString(), core.string.Description) - description!: string + description!: string rank!: Rank } diff --git a/models/core/src/tx.ts b/models/core/src/tx.ts index f688761ecf..59945e55d0 100644 --- a/models/core/src/tx.ts +++ b/models/core/src/tx.ts @@ -46,7 +46,7 @@ export class TTx extends TDoc implements Tx { @Prop(TypeRef(core.class.Space), core.string.Space) // @Index(IndexKind.Indexed) @Hidden() - objectSpace!: Ref + objectSpace!: Ref } @Model(core.class.TxModelUpgrade, core.class.Tx, DOMAIN_TX) @@ -57,12 +57,12 @@ export class TTxCUD extends TTx implements TxCUD { @Prop(TypeRef(core.class.Doc), core.string.Object) @Index(IndexKind.Indexed) @Hidden() - objectId!: Ref + objectId!: Ref @Prop(TypeRef(core.class.Class), core.string.ClassLabel) // @Index(IndexKind.Indexed) @Hidden() - objectClass!: Ref> + objectClass!: Ref> } @Model(core.class.TxCreateDoc, core.class.TxCUD) diff --git a/models/desktop-downloads/.eslintrc.js b/models/desktop-downloads/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/desktop-downloads/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/desktop-downloads/eslint.config.mjs b/models/desktop-downloads/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/desktop-downloads/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/desktop-downloads/package.json b/models/desktop-downloads/package.json index 461d89120d..9db4afeb7a 100644 --- a/models/desktop-downloads/package.json +++ b/models/desktop-downloads/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/desktop-preferences/.eslintrc.js b/models/desktop-preferences/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/desktop-preferences/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/desktop-preferences/eslint.config.mjs b/models/desktop-preferences/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/desktop-preferences/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/desktop-preferences/package.json b/models/desktop-preferences/package.json index 63e7b5d16c..deb103da84 100644 --- a/models/desktop-preferences/package.json +++ b/models/desktop-preferences/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/document/.eslintrc.js b/models/document/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/document/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/document/eslint.config.mjs b/models/document/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/document/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/document/package.json b/models/document/package.json index e70735c38c..097e7a5e64 100644 --- a/models/document/package.json +++ b/models/document/package.json @@ -18,19 +18,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/model-core": "workspace:^0.7.0", diff --git a/models/document/src/index.ts b/models/document/src/index.ts index 380a7efffd..4bb77741d3 100644 --- a/models/document/src/index.ts +++ b/models/document/src/index.ts @@ -71,13 +71,13 @@ export const DOMAIN_DOCUMENT = 'document' as Domain export class TDocument extends TDoc implements Document, Todoable { @Prop(TypeString(), document.string.Name) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeCollaborativeDoc(), document.string.Document) - content!: MarkupBlobRef | null + content!: MarkupBlobRef | null @Prop(TypeRef(document.class.Document), document.string.ParentDocument) - parent!: Ref + parent!: Ref @Prop(TypeRef(core.class.Space), core.string.Space) @Index(IndexKind.Indexed) @@ -86,41 +86,41 @@ export class TDocument extends TDoc implements Document, Todoable { @Prop(TypeAccountUuid(), document.string.LockedBy) @Hidden() - lockedBy?: AccountUuid + lockedBy?: AccountUuid @Prop(Collection(attachment.class.Embedding), attachment.string.Embeddings) - embeddings?: number + embeddings?: number @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number @Prop(Collection(tags.class.TagReference), document.string.Labels) - labels?: number + labels?: number @Prop(Collection(activity.class.ActivityReference), document.string.Backlinks) @Hidden() - references!: number + references!: number @Prop(TypeString(), document.string.Icon) @Hidden() @Index(IndexKind.FullText) - icon?: Asset + icon?: Asset @Prop(TypeNumber(), document.string.Color) @Hidden() @Index(IndexKind.FullText) - color?: number + color?: number @Prop(Collection(time.class.ToDo), getEmbeddedLabel('Action Items')) - todos?: CollectionSize + todos?: CollectionSize @Prop(TypeRank(), core.string.Rank) @Index(IndexKind.Indexed) @Hidden() - rank!: Rank + rank!: Rank } @Model(document.class.DocumentSnapshot, core.class.Doc, DOMAIN_DOCUMENT) @@ -133,14 +133,14 @@ export class TDocumentSnapshot extends TDoc implements DocumentSnapshot { @Prop(TypeString(), document.string.Name) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeCollaborativeDoc(), document.string.Document) @ReadOnly() - content!: MarkupBlobRef + content!: MarkupBlobRef @Prop(TypeRef(document.class.Document), document.string.ParentDocument) - parent!: Ref + parent!: Ref } @Model(document.class.Teamspace, core.class.TypedSpace) diff --git a/models/drive/.eslintrc.js b/models/drive/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/drive/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/drive/eslint.config.mjs b/models/drive/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/drive/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/drive/package.json b/models/drive/package.json index 88a23f7756..6869050f67 100644 --- a/models/drive/package.json +++ b/models/drive/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/drive/src/index.ts b/models/drive/src/index.ts index 35b23ed18d..e7dcda3c89 100644 --- a/models/drive/src/index.ts +++ b/models/drive/src/index.ts @@ -92,23 +92,23 @@ export class TResource extends TDoc implements Resource { @Prop(TypeString(), drive.string.Name) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeRef(drive.class.Resource), drive.string.Parent) @Index(IndexKind.Indexed) @ReadOnly() - parent!: Ref + parent!: Ref @Prop(TypeRef(drive.class.Resource), drive.string.Path) @ReadOnly() - path!: Ref[] + path!: Ref[] @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number @Prop(TypeRef(drive.class.FileVersion), drive.string.Version) @ReadOnly() - file?: Ref + file?: Ref } @Model(drive.class.Folder, drive.class.Resource, DOMAIN_DRIVE) @@ -144,11 +144,11 @@ export class TFile extends TResource implements File { @Prop(Collection(drive.class.FileVersion), drive.string.FileVersion) @ReadOnly() - versions!: CollectionSize + versions!: CollectionSize @Prop(TypeFileVersion(), drive.string.Version) @ReadOnly() - version!: number + version!: number } @Model(drive.class.FileVersion, core.class.AttachedDoc, DOMAIN_DRIVE) @@ -170,31 +170,31 @@ export class TFileVersion extends TAttachedDoc implements FileVersion { @Prop(TypeString(), drive.string.Name) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeRef(core.class.Blob), drive.string.File) @ReadOnly() - file!: Ref + file!: Ref @Prop(TypeFileSize(), drive.string.Size) @ReadOnly() - size!: number + size!: number @Prop(TypeString(), drive.string.ContentType) @ReadOnly() - type!: string + type!: string @Prop(TypeTimestamp(), drive.string.LastModified) @ReadOnly() - lastModified!: number + lastModified!: number @Prop(TypeRecord(), drive.string.Metadata) @ReadOnly() - metadata?: Record + metadata?: Record @Prop(TypeFileVersion(), drive.string.Version) @ReadOnly() - version!: number + version!: number } function defineTypes (builder: Builder): void { diff --git a/models/emoji/.eslintrc.js b/models/emoji/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/emoji/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/emoji/eslint.config.mjs b/models/emoji/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/emoji/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/emoji/package.json b/models/emoji/package.json index d8cb0ef968..9af7b35b3d 100644 --- a/models/emoji/package.json +++ b/models/emoji/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/emoji/src/models.ts b/models/emoji/src/models.ts index 9993f2ec66..052bdc4b57 100644 --- a/models/emoji/src/models.ts +++ b/models/emoji/src/models.ts @@ -24,9 +24,9 @@ export const DOMAIN_EMOJI = 'emoji' as Domain export class TCustomEmoji extends TDoc implements CustomEmoji { @Prop(TypeString(), emojiPlugin.string.Shortcode) @ReadOnly() - shortcode!: string + shortcode!: string @Prop(TypeRef(core.class.Blob), emojiPlugin.string.Image) @ReadOnly() - image!: Ref + image!: Ref } diff --git a/models/export/.eslintrc.js b/models/export/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/export/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/export/eslint.config.mjs b/models/export/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/export/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/export/package.json b/models/export/package.json index d5739eb8a6..9b8a658f11 100644 --- a/models/export/package.json +++ b/models/export/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/export/src/index.ts b/models/export/src/index.ts index 14fc130562..65bfeca7e9 100644 --- a/models/export/src/index.ts +++ b/models/export/src/index.ts @@ -35,22 +35,22 @@ export const DOMAIN_EXPORT = 'export' as Domain @UX(exportPlugin.string.ImportCompleted, exportPlugin.icon.Export) export class TExportResultRecord extends TDoc implements ExportResultRecord { @Prop(TypeString(), exportPlugin.string.SourceWorkspace) - sourceWorkspace!: string + sourceWorkspace!: string @Prop(TypeString(), exportPlugin.string.TargetWorkspace) - targetWorkspace!: string + targetWorkspace!: string @Prop(TypeNumber(), exportPlugin.string.ExportedCount) - exportedCount!: number + exportedCount!: number @Prop(ArrOf(TypeRef(core.class.Doc)), exportPlugin.string.ExportedDocumentIds) - exportedDocumentIds!: Ref[] + exportedDocumentIds!: Ref[] @Prop(TypeRef(core.class.Class), exportPlugin.string.ExportedDocumentClass) - objectClass!: Ref> + objectClass!: Ref> @Prop(TypeString(), view.string.Title) - title?: string + title?: string } export function createModel (builder: Builder): void { diff --git a/models/gmail/.eslintrc.js b/models/gmail/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/gmail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/gmail/eslint.config.mjs b/models/gmail/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/gmail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/gmail/package.json b/models/gmail/package.json index bd3c58fe64..e901342d4e 100644 --- a/models/gmail/package.json +++ b/models/gmail/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/gmail/src/index.ts b/models/gmail/src/index.ts index 9f3ad61beb..b974c34f7e 100644 --- a/models/gmail/src/index.ts +++ b/models/gmail/src/index.ts @@ -60,43 +60,43 @@ export class TMessage extends TAttachedDoc implements Message { declare attachedToClass: Ref> @Prop(TypeString(), gmail.string.MessageID) - messageId!: string + messageId!: string @Prop(TypeString(), gmail.string.ReplyTo) @Index(IndexKind.FullText) - replyTo?: string + replyTo?: string @Prop(TypeString(), gmail.string.From) @Index(IndexKind.FullText) - from!: string + from!: string @Prop(TypeString(), gmail.string.To) @Index(IndexKind.FullText) - to!: string + to!: string @Prop(TypeString(), gmail.string.Subject) @Index(IndexKind.FullText) - subject!: string + subject!: string @Prop(TypeString(), gmail.string.Message) @Index(IndexKind.FullText) - content!: string + content!: string @Prop(TypeString(), gmail.string.Message) @Index(IndexKind.FullText) - textContent!: string + textContent!: string @Prop(ArrOf(TypeString()), gmail.string.Copy) - copy?: string[] + copy?: string[] @Prop(TypeBoolean(), gmail.string.Incoming) - incoming!: boolean + incoming!: boolean @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeTimestamp(), core.string.Modified) - sendOn!: Timestamp + sendOn!: Timestamp } @Model(gmail.class.NewMessage, core.class.Doc, DOMAIN_GMAIL) @@ -104,37 +104,37 @@ export class TMessage extends TAttachedDoc implements Message { export class TNewMessage extends TDoc implements NewMessage { @Prop(TypeString(), gmail.string.ReplyTo) @Index(IndexKind.FullText) - replyTo?: string + replyTo?: string @Prop(TypeString(), gmail.string.To) @Index(IndexKind.FullText) - to!: string + to!: string @Prop(TypeString(), gmail.string.Subject) @Index(IndexKind.FullText) - subject!: string + subject!: string @Prop(TypeString(), gmail.string.Message) @Index(IndexKind.FullText) - content!: string + content!: string @Prop(TypeString(), gmail.string.Status) - status!: 'new' | 'sent' | 'error' + status!: 'new' | 'sent' | 'error' @Prop(TypeString(), gmail.string.Status) - error?: string + error?: string @Prop(ArrOf(TypeString()), gmail.string.Copy) - copy?: string[] + copy?: string[] @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number } @Model(gmail.class.SharedMessages, core.class.AttachedDoc, DOMAIN_GMAIL) export class TSharedMessages extends TAttachedDoc implements SharedMessages { @Prop(ArrOf(TypeSharedMessage()), gmail.string.Messages) - messages!: SharedMessage[] + messages!: SharedMessage[] } export function createModel (builder: Builder): void { diff --git a/models/gmail/src/migration.ts b/models/gmail/src/migration.ts index 90abbac9ed..c6787fa702 100644 --- a/models/gmail/src/migration.ts +++ b/models/gmail/src/migration.ts @@ -33,7 +33,7 @@ async function migrateSettings (client: MigrationClient): Promise { DOMAIN_PREFERENCE, { _class: 'notification:class:NotificationSetting' as Ref>, - attachedTo: 'notification:providers:EmailNotification' as Ref + attachedTo: 'notification:providers:EmailNotification' }, { _class: notification.class.NotificationTypeSetting, diff --git a/models/guest/.eslintrc.js b/models/guest/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/guest/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/guest/eslint.config.mjs b/models/guest/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/guest/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/guest/package.json b/models/guest/package.json index ae7d59fe23..c4d7181a63 100644 --- a/models/guest/package.json +++ b/models/guest/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/hr/.eslintrc.js b/models/hr/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/hr/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/hr/eslint.config.mjs b/models/hr/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/hr/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/hr/package.json b/models/hr/package.json index b39d7921e9..135a24aa78 100644 --- a/models/hr/package.json +++ b/models/hr/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/models/hr/src/index.ts b/models/hr/src/index.ts index dd6841ec1f..7f86bed753 100644 --- a/models/hr/src/index.ts +++ b/models/hr/src/index.ts @@ -72,52 +72,52 @@ export const DOMAIN_HR = 'hr' as Domain export class TDepartment extends TDoc implements Department { @Prop(TypeRef(hr.class.Department), hr.string.ParentDepartmentLabel) @Index(IndexKind.Indexed) - parent?: Ref + parent?: Ref @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeString(), core.string.Description) @Index(IndexKind.FullText) - description!: string + description!: string @Prop(Collection(contact.class.Channel), contact.string.ContactInfo) - channels?: number + channels?: number @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number avatar?: string | null @Prop(TypeRef(contact.mixin.Employee), hr.string.TeamLead) - teamLead!: Ref | null + teamLead!: Ref | null @Prop(ArrOf(TypeRef(contact.mixin.Employee)), contact.string.Members) - members!: Arr> + members!: Arr> @Prop(ArrOf(TypeRef(contact.class.Contact)), hr.string.Subscribers) - subscribers?: Arr> + subscribers?: Arr> @Prop(ArrOf(TypeRef(contact.mixin.Employee)), hr.string.Managers) - managers!: Arr> + managers!: Arr> } @Mixin(hr.mixin.Staff, contact.mixin.Employee) @UX(hr.string.Staff, hr.icon.HR, 'STFF', 'name') export class TStaff extends TEmployee implements Staff { @Prop(TypeRef(hr.class.Department), hr.string.Department) - department!: Ref + department!: Ref } @Model(hr.class.RequestType, core.class.Doc, DOMAIN_MODEL) @UX(hr.string.RequestType) export class TRequestType extends TDoc implements RequestType { @Prop(TypeIntlString(), core.string.Name) - label!: IntlString + label!: IntlString icon!: Asset value!: number @@ -153,27 +153,27 @@ export class TRequest extends TAttachedDoc implements Request { @Prop(TypeRef(hr.class.Department), hr.string.Department) @Index(IndexKind.Indexed) - department!: Ref + department!: Ref @Prop(TypeRef(hr.class.RequestType), hr.string.RequestType) @Hidden() - type!: Ref + type!: Ref @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeMarkup(), core.string.Description) @Index(IndexKind.FullText) - description!: Markup + description!: Markup @Prop(TypeTzDate(), calendar.string.Date) - tzDate!: TzDate + tzDate!: TzDate @Prop(TypeTzDate(), calendar.string.DueTo) - tzDueDate!: TzDate + tzDueDate!: TzDate } @Model(hr.class.PublicHoliday, core.class.Doc, DOMAIN_HR) diff --git a/models/huly-mail/.eslintrc.js b/models/huly-mail/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/huly-mail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/huly-mail/eslint.config.mjs b/models/huly-mail/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/huly-mail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/huly-mail/package.json b/models/huly-mail/package.json index a80338c253..2be405689e 100644 --- a/models/huly-mail/package.json +++ b/models/huly-mail/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/model": "workspace:^0.7.17", diff --git a/models/inbox/eslint.config.mjs b/models/inbox/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/inbox/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/inbox/package.json b/models/inbox/package.json index 1382f8cb41..4120f7a5c7 100644 --- a/models/inbox/package.json +++ b/models/inbox/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/card": "workspace:^0.7.0", diff --git a/models/inventory/.eslintrc.js b/models/inventory/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/inventory/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/inventory/eslint.config.mjs b/models/inventory/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/inventory/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/inventory/package.json b/models/inventory/package.json index c60c81b50e..c39c5b3261 100644 --- a/models/inventory/package.json +++ b/models/inventory/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/inventory/src/index.ts b/models/inventory/src/index.ts index f5440ad734..315a2259a3 100644 --- a/models/inventory/src/index.ts +++ b/models/inventory/src/index.ts @@ -36,7 +36,7 @@ export const DOMAIN_INVENTORY = 'inventory' as Domain export class TCategory extends TAttachedDoc implements Category { @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string } @Model(inventory.class.Product, core.class.AttachedDoc, DOMAIN_INVENTORY) @@ -48,16 +48,16 @@ export class TProduct extends TAttachedDoc implements Product { @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(Collection(attachment.class.Photo), attachment.string.Photos) - photos?: number + photos?: number @Prop(Collection(inventory.class.Variant), inventory.string.Variants) - variants?: number + variants?: number @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number } @Model(inventory.class.Variant, core.class.AttachedDoc, DOMAIN_INVENTORY) @@ -69,11 +69,11 @@ export class TVariant extends TAttachedDoc implements Variant { @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeString(), inventory.string.SKU) @Index(IndexKind.FullText) - sku!: string + sku!: string } export function createModel (builder: Builder): void { diff --git a/models/lead/.eslintrc.js b/models/lead/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/lead/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/lead/eslint.config.mjs b/models/lead/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/lead/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/lead/package.json b/models/lead/package.json index 2c6a9117a9..1f6328f435 100644 --- a/models/lead/package.json +++ b/models/lead/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/lead/src/types.ts b/models/lead/src/types.ts index 2709c70835..3595948148 100644 --- a/models/lead/src/types.ts +++ b/models/lead/src/types.ts @@ -57,13 +57,13 @@ export { default } from './plugin' export class TFunnel extends TProject implements Funnel { @Prop(TypeMarkup(), lead.string.FullDescription) @Index(IndexKind.FullText) - fullDescription?: string + fullDescription?: string @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number } @Model(lead.class.Lead, task.class.Task) @@ -74,11 +74,11 @@ export class TLead extends TTask implements Lead { declare attachedTo: Ref @Prop(TypeDate(), task.string.StartDate) - startDate!: Timestamp | null + startDate!: Timestamp | null @Prop(TypeString(), lead.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeRef(contact.mixin.Employee), lead.string.Assignee) declare assignee: Ref | null @@ -93,11 +93,11 @@ export class TLead extends TTask implements Lead { @UX(lead.string.Customer, lead.icon.LeadApplication, undefined, undefined, undefined, lead.string.Customers) export class TCustomer extends TContact implements Customer { @Prop(Collection(lead.class.Lead), lead.string.Leads) - leads?: number + leads?: number @Prop(TypeCollaborativeDoc(), lead.string.Description) @Index(IndexKind.FullText) - customerDescription!: MarkupBlobRef | null + customerDescription!: MarkupBlobRef | null } @Mixin(lead.mixin.DefaultFunnelTypeData, lead.class.Funnel) diff --git a/models/love/.eslintrc.js b/models/love/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/love/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/love/eslint.config.mjs b/models/love/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/love/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/love/package.json b/models/love/package.json index 306894d7c7..bf20e81e55 100644 --- a/models/love/package.json +++ b/models/love/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/love/src/index.ts b/models/love/src/index.ts index e3ae2d995f..ee2d48932f 100644 --- a/models/love/src/index.ts +++ b/models/love/src/index.ts @@ -97,11 +97,11 @@ export const DOMAIN_MEETING_MINUTES = 'meeting-minutes' as Domain export class TRoom extends TDoc implements Room { @Prop(TypeString(), core.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeCollaborativeDoc(), core.string.Description) @Index(IndexKind.FullText) - description!: MarkupBlobRef | null + description!: MarkupBlobRef | null type!: RoomType @@ -110,7 +110,7 @@ export class TRoom extends TDoc implements Room { @Prop(TypeRef(love.class.Floor), love.string.Floor) @ReadOnly() // @Index(IndexKind.Indexed) - floor!: Ref + floor!: Ref width!: number height!: number @@ -119,22 +119,22 @@ export class TRoom extends TDoc implements Room { @Prop(TypeString(), love.string.Language, { editor: love.component.RoomLanguageEditor }) @Hidden() - language!: RoomLanguage + language!: RoomLanguage @Prop(TypeBoolean(), love.string.StartWithTranscription) - startWithTranscription!: boolean + startWithTranscription!: boolean @Prop(TypeBoolean(), love.string.StartWithRecording) - startWithRecording!: boolean + startWithRecording!: boolean @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(PropCollection(love.class.MeetingMinutes), love.string.MeetingMinutes) - meetings?: number + meetings?: number @Prop(PropCollection(chunter.class.ChatMessage), activity.string.Messages) - messages?: number + messages?: number } @Model(love.class.Office, love.class.Room) @@ -143,7 +143,7 @@ export class TOffice extends TRoom implements Office { @Prop(TypeRef(contact.mixin.Employee), contact.string.Employee) @Index(IndexKind.Indexed) @ReadOnly() - person!: Ref | null + person!: Ref | null } @Model(love.class.Floor, core.class.Doc, DOMAIN_LOVE) @@ -155,13 +155,13 @@ export class TFloor extends TDoc implements Floor { export class TParticipantInfo extends TDoc implements ParticipantInfo { name!: string @Prop(TypeRef(contact.class.Person), getEmbeddedLabel('Person')) - person!: Ref + person!: Ref @Prop(TypeRef(love.class.MeetingMinutes), love.string.MeetingMinutes) - meeting!: Ref + meeting!: Ref @Prop(TypeRef(love.class.Room), love.string.Room) - room!: Ref + room!: Ref x!: number y!: number @@ -184,21 +184,21 @@ export class TPendingRecording extends TAttachedDoc implements PendingRecording egressId?: string @Prop(TypeString(), love.string.Recording) - format!: RecordingFormat + format!: RecordingFormat @Prop(TypeTimestamp(), love.string.MeetingStart) - startedAt!: Timestamp + startedAt!: Timestamp roomName!: string @Prop(TypeString(), core.string.Name) - name!: string + name!: string @Prop(TypeString(), getEmbeddedLabel('Size')) - size?: number + size?: number @Prop(TypeString(), getEmbeddedLabel('Status')) - status!: 'active' | 'cancelled' | 'completed' + status!: 'active' | 'cancelled' | 'completed' } @Model(love.class.DevicesPreference, preference.class.Preference) @@ -239,17 +239,17 @@ export class TMeetingMinutes extends TAttachedDoc implements MeetingMinutes, Tod @Prop(TypeString(), view.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeCollaborativeDoc(), core.string.Description) @Index(IndexKind.FullText) - description!: MarkupBlobRef | null + description!: MarkupBlobRef | null @Prop(TypeAny(love.component.MeetingMinutesStatusPresenter, love.string.Status), love.string.Status, { editor: love.component.MeetingMinutesStatusPresenter }) @ReadOnly() - status!: MeetingStatus + status!: MeetingStatus @Prop( TypeAny(love.component.MeetingMinutesTranscriptionStatePresenter, love.string.TranscriptionState), @@ -259,7 +259,7 @@ export class TMeetingMinutes extends TAttachedDoc implements MeetingMinutes, Tod } ) @ReadOnly() - transcriptionState!: TranscriptionState + transcriptionState!: TranscriptionState @Prop( TypeAny(love.component.MeetingMinutesRecordingStatePresenter, love.string.RecordingState), @@ -269,21 +269,21 @@ export class TMeetingMinutes extends TAttachedDoc implements MeetingMinutes, Tod } ) @ReadOnly() - recordingState!: RecordingState + recordingState!: RecordingState @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(Collection(love.class.PendingRecording), love.string.Recording, { collectionEditor: love.component.PendingRecordingPresenter }) - recordings?: number + recordings?: number @Prop(PropCollection(chunter.class.ChatMessage), love.string.Transcription) - transcription?: number + transcription?: number @Prop(PropCollection(chunter.class.ChatMessage), activity.string.Messages) - messages?: number + messages?: number @Prop(TypeDate(DateRangeMode.DATETIME), love.string.MeetingStart, { editor: view.component.DateTimePresenter }) @ReadOnly() @@ -292,10 +292,10 @@ export class TMeetingMinutes extends TAttachedDoc implements MeetingMinutes, Tod @Prop(TypeDate(DateRangeMode.DATETIME), love.string.MeetingEnd, { editor: view.component.DateTimePresenter }) @ReadOnly() - meetingEnd?: Timestamp + meetingEnd?: Timestamp @Prop(Collection(time.class.ToDo), getEmbeddedLabel('Action Items')) - todos?: CollectionSize + todos?: CollectionSize access!: RoomAccess @@ -315,25 +315,25 @@ export const DOMAIN_USER_MEETING_INVITE = 'user-meeting-invite' as Domain export class TUserMeetingInvite extends TDoc implements UserMeetingInvite { @Prop(TypeString(), love.string.Kind) @Index(IndexKind.Indexed) - kind!: 'invite-request' | 'invite-response' + kind!: 'invite-request' | 'invite-response' @Prop(TypeRef(contact.class.Person), love.string.From) @Index(IndexKind.Indexed) - from!: Ref + from!: Ref @Prop(TypeRef(contact.class.Person), love.string.To) @Index(IndexKind.Indexed) - to!: Ref + to!: Ref @Prop(TypeRef(love.class.MeetingMinutes), love.string.Meeting) - meeting?: Ref + meeting?: Ref @Prop(TypeTimestamp(), love.string.ExpiresAt) @Index(IndexKind.Indexed) - expiresAt!: Timestamp + expiresAt!: Timestamp @Prop(TypeString(), love.string.Status) - status!: 'pending' | 'accepted' | 'declined' + status!: 'pending' | 'accepted' | 'declined' } export default love diff --git a/models/mail/.eslintrc.js b/models/mail/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/mail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/mail/eslint.config.mjs b/models/mail/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/mail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/mail/package.json b/models/mail/package.json index b7e5092b9f..b89a52936d 100644 --- a/models/mail/package.json +++ b/models/mail/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/media/.eslintrc.js b/models/media/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/media/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/media/eslint.config.mjs b/models/media/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/media/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/media/package.json b/models/media/package.json index 4ed34d2574..73ca1731cc 100644 --- a/models/media/package.json +++ b/models/media/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/notification/.eslintrc.js b/models/notification/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/notification/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/notification/eslint.config.mjs b/models/notification/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/notification/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/notification/package.json b/models/notification/package.json index 06f341f679..3bc9366b4c 100644 --- a/models/notification/package.json +++ b/models/notification/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/notification/src/index.ts b/models/notification/src/index.ts index ac808504f4..f4c00832ad 100644 --- a/models/notification/src/index.ts +++ b/models/notification/src/index.ts @@ -171,7 +171,7 @@ export class TNotificationProviderSetting extends TPreference implements Notific @UX(notification.string.Collaborators) export class TCollaborators extends TDoc implements Collaborators { @Prop(CollectionType(core.class.Collaborator), notification.string.Collaborators) - collaborators!: CollectionSize + collaborators!: CollectionSize } @Mixin(notification.mixin.NotificationObjectPresenter, core.class.Class) @@ -193,31 +193,31 @@ export class TNotificationContextPresenter extends TClass implements Notificatio export class TDocNotifyContext extends TDoc implements DocNotifyContext { @Prop(TypeAccountUuid(), core.string.Account) @Index(IndexKind.Indexed) - user!: AccountUuid + user!: AccountUuid @Prop(TypeRef(core.class.Doc), core.string.Object) @Index(IndexKind.Indexed) - objectId!: Ref + objectId!: Ref @Prop(TypeRef(core.class.Class), core.string.Class) - objectClass!: Ref> + objectClass!: Ref> @Prop(TypeRef(core.class.Space), core.string.Space) - objectSpace!: Ref + objectSpace!: Ref declare space: Ref @Prop(TypeDate(), core.string.Date) - lastViewedTimestamp?: Timestamp + lastViewedTimestamp?: Timestamp @Prop(TypeDate(), core.string.Date) - lastUpdateTimestamp?: Timestamp + lastUpdateTimestamp?: Timestamp @Prop(TypeBoolean(), notification.string.Pinned) - isPinned!: boolean + isPinned!: boolean @Prop(TypeBoolean(), view.string.Hide) - hidden!: boolean + hidden!: boolean tx?: Ref> } @@ -226,18 +226,18 @@ export class TDocNotifyContext extends TDoc implements DocNotifyContext { export class TInboxNotification extends TDoc implements InboxNotification { @Prop(TypeRef(notification.class.DocNotifyContext), core.string.AttachedTo) @Index(IndexKind.Indexed) - docNotifyContext!: Ref + docNotifyContext!: Ref @Prop(TypeAccountUuid(), core.string.Account) @Index(IndexKind.Indexed) - user!: AccountUuid + user!: AccountUuid @Prop(TypeBoolean(), core.string.Boolean) // @Index(IndexKind.Indexed) - isViewed!: boolean + isViewed!: boolean @Prop(TypeBoolean(), core.string.Boolean) - archived!: boolean + archived!: boolean objectId!: Ref objectClass!: Ref> @@ -255,30 +255,30 @@ export class TInboxNotification extends TDoc implements InboxNotification { @Model(notification.class.ActivityInboxNotification, notification.class.InboxNotification) export class TActivityInboxNotification extends TInboxNotification implements ActivityInboxNotification { @Prop(TypeRef(activity.class.ActivityMessage), core.string.AttachedTo) - attachedTo!: Ref + attachedTo!: Ref @Prop(TypeRef(activity.class.ActivityMessage), core.string.AttachedToClass) - attachedToClass!: Ref> + attachedToClass!: Ref> } @Model(notification.class.CommonInboxNotification, notification.class.InboxNotification) export class TCommonInboxNotification extends TInboxNotification implements CommonInboxNotification { @Prop(TypeIntlString(), core.string.String) - header?: IntlString + header?: IntlString @Prop(TypeRef(core.class.Doc), core.string.Object) - headerObjectId?: Ref + headerObjectId?: Ref @Prop(TypeRef(core.class.Doc), core.string.Class) - headerObjectClass?: Ref> + headerObjectClass?: Ref> @Prop(TypeIntlString(), notification.string.Message) - message?: IntlString + message?: IntlString headerIcon?: Asset @Prop(TypeMarkup(), notification.string.Message) - messageHtml?: Markup + messageHtml?: Markup props?: Record icon?: Asset @@ -288,10 +288,10 @@ export class TCommonInboxNotification extends TInboxNotification implements Comm @Model(notification.class.MentionInboxNotification, notification.class.CommonInboxNotification) export class TMentionInboxNotification extends TCommonInboxNotification implements MentionInboxNotification { @Prop(TypeRef(core.class.Doc), core.string.Object) - mentionedIn!: Ref + mentionedIn!: Ref @Prop(TypeRef(core.class.Doc), core.string.Class) - mentionedInClass!: Ref> + mentionedInClass!: Ref> } @Model(notification.class.ReactionInboxNotification, notification.class.CommonInboxNotification) @@ -299,10 +299,10 @@ export class TReactionInboxNotification extends TCommonInboxNotification impleme emoji!: string ref!: Ref @Prop(TypeRef(activity.class.ActivityMessage), core.string.AttachedTo) - attachedTo!: Ref + attachedTo!: Ref @Prop(TypeRef(activity.class.ActivityMessage), core.string.AttachedToClass) - attachedToClass!: Ref> + attachedToClass!: Ref> } @Model(notification.class.ActivityNotificationViewlet, core.class.Doc, DOMAIN_MODEL) diff --git a/models/notification/src/migration.ts b/models/notification/src/migration.ts index 5bc85e0183..8ae9c36e3c 100644 --- a/models/notification/src/migration.ts +++ b/models/notification/src/migration.ts @@ -584,7 +584,7 @@ export async function migrateSettings (client: MigrationClient): Promise { DOMAIN_PREFERENCE, { _class: 'notification:class:NotificationSetting' as Ref>, - attachedTo: 'notification:providers:BrowserNotification' as Ref + attachedTo: 'notification:providers:BrowserNotification' }, { _class: notification.class.NotificationTypeSetting, @@ -596,7 +596,7 @@ export async function migrateSettings (client: MigrationClient): Promise { DOMAIN_PREFERENCE, { _class: 'notification:class:NotificationSetting' as Ref>, - attachedTo: 'notification:providers:PlatformNotification' as Ref + attachedTo: 'notification:providers:PlatformNotification' }, { _class: notification.class.NotificationTypeSetting, @@ -656,7 +656,7 @@ export const notificationOperation: MigrateOperation = { state: 'delete-invalid-notifications', mode: 'upgrade', func: async (client) => { - await removeNotifications(client, { attachedToClass: 'chunter:class:Comment' as Ref> }) + await removeNotifications(client, { attachedToClass: 'chunter:class:Comment' }) } }, { @@ -664,7 +664,7 @@ export const notificationOperation: MigrateOperation = { mode: 'upgrade', func: async (client) => { await client.deleteMany(DOMAIN_NOTIFICATION, { _class: 'notification:class:DocUpdates' as Ref> }) - await client.deleteMany(DOMAIN_TX, { objectClass: 'notification:class:DocUpdates' as Ref> }) + await client.deleteMany(DOMAIN_TX, { objectClass: 'notification:class:DocUpdates' }) } }, { diff --git a/models/preference/.eslintrc.js b/models/preference/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/preference/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/preference/eslint.config.mjs b/models/preference/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/preference/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/preference/package.json b/models/preference/package.json index 9ac9ee34ac..e4d0bdaa25 100644 --- a/models/preference/package.json +++ b/models/preference/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/preference/src/index.ts b/models/preference/src/index.ts index 9ce15d9bfc..533bf1fa0c 100644 --- a/models/preference/src/index.ts +++ b/models/preference/src/index.ts @@ -25,7 +25,7 @@ export { preference as default } @Model(preference.class.Preference, core.class.Doc, DOMAIN_PREFERENCE) export class TPreference extends TDoc implements Preference { @Prop(TypeString(), core.string.AttachedTo) - attachedTo!: string + attachedTo!: string } @Model(preference.class.SpacePreference, preference.class.Preference) diff --git a/models/presence/.eslintrc.js b/models/presence/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/presence/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/presence/eslint.config.mjs b/models/presence/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/presence/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/presence/package.json b/models/presence/package.json index b4215d67af..956230c3d7 100644 --- a/models/presence/package.json +++ b/models/presence/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/presentation/.eslintrc.js b/models/presentation/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/presentation/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/presentation/eslint.config.mjs b/models/presentation/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/presentation/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/presentation/package.json b/models/presentation/package.json index 3292bcabda..255849e08b 100644 --- a/models/presentation/package.json +++ b/models/presentation/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/presentation/src/index.ts b/models/presentation/src/index.ts index 3ee5488f95..12c04d21cb 100644 --- a/models/presentation/src/index.ts +++ b/models/presentation/src/index.ts @@ -87,7 +87,7 @@ export class TComponentPointExtension extends TDoc implements ComponentPointExte @Model(presentation.class.DocCreateExtension, core.class.Doc, DOMAIN_MODEL) export class TDocCreateExtension extends TDoc implements DocCreateExtension { @Prop(TypeRef(core.class.Class), core.string.Class) - ofClass!: Ref> + ofClass!: Ref> components!: Record apply!: Resource @@ -97,7 +97,7 @@ export class TDocCreateExtension extends TDoc implements DocCreateExtension { @Model(presentation.class.DocRules, core.class.Doc, DOMAIN_MODEL) export class TDocRules extends TDoc implements DocRules { @Prop(TypeRef(core.class.Class), core.string.Class) - ofClass!: Ref> + ofClass!: Ref> fieldRules!: DocAttributeRule[] } @@ -105,7 +105,7 @@ export class TDocRules extends TDoc implements DocRules { @Model(presentation.class.FilePreviewExtension, presentation.class.ComponentPointExtension) export class TFilePreviewExtension extends TComponentPointExtension implements FilePreviewExtension { @Prop(TypeString(), presentation.string.ContentType) - contentType!: string | string[] + contentType!: string | string[] alignment?: string metadataProvider?: Resource<(file: FileOrBlob, blob: Ref) => Promise> diff --git a/models/print/.eslintrc.js b/models/print/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/print/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/print/eslint.config.mjs b/models/print/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/print/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/print/package.json b/models/print/package.json index e298bcae25..73aefa3488 100644 --- a/models/print/package.json +++ b/models/print/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/process/.eslintrc.js b/models/process/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/process/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/process/eslint.config.mjs b/models/process/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/process/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/process/package.json b/models/process/package.json index e62bf84d1c..ec37459703 100644 --- a/models/process/package.json +++ b/models/process/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/models/process/src/index.ts b/models/process/src/index.ts index 4017d9373e..a3e7632a41 100644 --- a/models/process/src/index.ts +++ b/models/process/src/index.ts @@ -89,31 +89,31 @@ const DOMAIN_PROCESS_LOG = 'process-log' as Domain @Model(process.class.Process, core.class.Doc, DOMAIN_MODEL) export class TProcess extends TDoc implements Process { @Prop(TypeString(), core.string.Name) - name!: string + name!: string @Prop(TypeString(), core.string.Description) - description!: string + description!: string @Prop(TypeRef(card.class.MasterTag), card.string.MasterTag) - masterTag!: Ref + masterTag!: Ref @Prop(TypeRef(process.class.State), process.string.NewState) - initState!: Ref + initState!: Ref @Prop(TypeBoolean(), process.string.ParallelExecutionForbidden) - parallelExecutionForbidden?: boolean + parallelExecutionForbidden?: boolean @Prop(TypeBoolean(), process.string.StartAutomatically) - autoStart: boolean | undefined + autoStart: boolean | undefined @Prop(TypeBoolean(), process.string.AutomationOnly) - automationOnly: boolean | undefined + automationOnly: boolean | undefined @Prop(TypeRecord(), process.string.RequiredSlots) - requiredSlots?: Record + requiredSlots?: Record @Prop(TypeRecord(), process.string.Bindings) - bindings?: Record + bindings?: Record context!: Record } @@ -140,64 +140,64 @@ export class TTrigger extends TDoc implements Trigger { @Model(process.class.Transition, core.class.Doc, DOMAIN_MODEL) export class TTransition extends TDoc implements Transition { @Prop(TypeRef(process.class.Process), process.string.Process) - process!: Ref + process!: Ref @Prop(TypeRef(process.class.State), process.string.From) - from!: Ref | null + from!: Ref | null @Prop(TypeRef(process.class.State), process.string.To) - to!: Ref + to!: Ref @Prop(TypeAny(process.component.ActionsPresenter, process.string.Actions), process.string.Actions) - actions!: Step[] + actions!: Step[] @Prop(TypeRef(process.class.Trigger), process.string.Trigger) - trigger!: Ref + trigger!: Ref triggerParams!: Record @Prop(TypeRank(), core.string.Rank) @Hidden() - rank!: Rank + rank!: Rank } @Model(process.class.ExecutionLog, core.class.Doc, DOMAIN_PROCESS_LOG) export class TExecutionLog extends TDoc implements ExecutionLog { @Prop(TypeRef(process.class.Execution), process.string.Execution) - execution!: Ref + execution!: Ref @Prop(TypeRef(process.class.Process), process.string.Process) - process!: Ref + process!: Ref @Prop(TypeRef(card.class.Card), card.string.Card) - card!: Ref + card!: Ref @Prop(TypeRef(process.class.Transition), process.string.Transition) - transition?: Ref + transition?: Ref @Prop(TypeAny(process.component.LogActionPresenter, process.string.LogAction), process.string.LogAction) - action!: ExecutionLogAction + action!: ExecutionLogAction } @Model(process.class.Execution, core.class.Doc, DOMAIN_PROCESS) export class TExecution extends TDoc implements Execution { @Prop(TypeRef(process.class.Process), process.string.Process) @ReadOnly() - process!: Ref + process!: Ref @Prop(TypeRef(process.class.State), process.string.Step) @ReadOnly() - currentState!: Ref + currentState!: Ref rollback!: Tx[][] @Prop(TypeRef(card.class.Card), card.string.Card) @ReadOnly() - card!: Ref + card!: Ref @Prop(TypeAny(process.component.ErrorPresenter, process.string.Error), process.string.Error) @ReadOnly() - error?: ExecutionError[] | null + error?: ExecutionError[] | null parentId?: Ref @@ -212,30 +212,30 @@ export class TExecution extends TDoc implements Execution { @UX(process.string.ToDo) export class TProcessToDo extends TToDo implements ProcessToDo { @Prop(TypeRef(process.class.Execution), process.string.Execution) - execution!: Ref + execution!: Ref @Prop(TypeBoolean(), process.string.Rollback) - withRollback!: boolean + withRollback!: boolean @Prop(TypeBoolean(), process.string.AskRequired) - askRequired?: boolean + askRequired?: boolean } @Model(process.class.ApproveRequest, process.class.ProcessToDo) @UX(process.string.ApproveRequest) export class TApproveRequest extends TProcessToDo implements ApproveRequest { @Prop(TypeBoolean(), process.string.IsApproved) - approved?: boolean + approved?: boolean @Prop(TypeString(), process.string.RejectionReason) - reason?: string + reason?: string group!: string card!: Ref @Prop(TypeString(), process.string.ActionType) - actionType?: 'approve' | 'review' + actionType?: 'approve' | 'review' } @Model(process.class.Method, core.class.Doc, DOMAIN_MODEL) @@ -261,14 +261,14 @@ export class TMethod extends TDoc implements Method { export class TState extends TDoc implements State { @Prop(TypeRef(process.class.Process), process.string.Process) @ReadOnly() - process!: Ref + process!: Ref @Prop(TypeString(), core.string.Name) - title!: string + title!: string @Prop(TypeRank(), core.string.Rank) @Hidden() - rank!: Rank + rank!: Rank } @Model(process.class.ProcessCustomEvent, core.class.Doc, DOMAIN_TRANSIENT) @@ -276,10 +276,10 @@ export class TProcessCustomEvent extends TDoc implements ProcessCustomEvent { eventType!: string @Prop(TypeRef(process.class.Execution), process.string.Execution) - execution!: Ref + execution!: Ref @Prop(TypeRef(card.class.Card), card.string.Card) - card!: Ref + card!: Ref } @Model(process.class.EventButton, core.class.Doc, DOMAIN_PROCESS) @@ -289,48 +289,48 @@ export class TEventButton extends TDoc implements EventButton { eventType!: string @Prop(TypeRef(process.class.Execution), process.string.Execution) - execution!: Ref + execution!: Ref @Prop(TypeRef(card.class.Card), card.string.Card) - card!: Ref + card!: Ref } @Model(process.class.ProcessFunction, core.class.Doc, DOMAIN_MODEL) export class TProcessFunction extends TDoc implements ProcessFunction { @Prop(TypeRef(core.class.Class), getEmbeddedLabel('To')) - to?: Ref> + to?: Ref> @Prop(TypeRef(core.class.Class), getEmbeddedLabel('Of')) - of!: Ref>> + of!: Ref>> @Prop(TypeString(), getEmbeddedLabel('Category')) - category: AttributeCategory | undefined + category: AttributeCategory | undefined @Prop(TypeIntlString(), getEmbeddedLabel('Label')) - label!: IntlString + label!: IntlString editor?: AnyComponent presenter?: AnyComponent @Prop(TypeBoolean(), getEmbeddedLabel('AllowMany')) - allowMany?: boolean + allowMany?: boolean @Prop(TypeString(), getEmbeddedLabel('Type')) - type!: 'transform' | 'reduce' | 'context' | 'convert' + type!: 'transform' | 'reduce' | 'context' | 'convert' } @Model(process.class.UpdateCriteriaComponent, core.class.Doc, DOMAIN_MODEL) export class TUpdateCriteriaComponent extends TDoc implements UpdateCriteriaComponent { @Prop(TypeString(), getEmbeddedLabel('Category')) - category!: AttributeCategory + category!: AttributeCategory editor!: AnyComponent @Prop(TypeRef(core.class.Class), getEmbeddedLabel('Of')) - of!: Ref>> + of!: Ref>> @Prop(TypeRecord(), getEmbeddedLabel('Props')) - props!: Record + props!: Record } export * from './migration' diff --git a/models/products/.eslintrc.js b/models/products/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/products/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/products/eslint.config.mjs b/models/products/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/products/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/products/package.json b/models/products/package.json index 3a7b5cc413..44afecc89a 100644 --- a/models/products/package.json +++ b/models/products/package.json @@ -21,21 +21,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", "@types/node": "^24.13.3", "ts-node": "^10.9.2", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", diff --git a/models/products/src/index.ts b/models/products/src/index.ts index bfd8efe585..9ada160deb 100644 --- a/models/products/src/index.ts +++ b/models/products/src/index.ts @@ -94,20 +94,20 @@ export class TProduct extends TExternalSpace implements Product { @Prop(TypeMarkup(), products.string.Description) @Index(IndexKind.FullText) - fullDescription?: string + fullDescription?: string @Prop(TypeString(), products.string.Icon) @Index(IndexKind.FullText) @Hidden() - icon?: Asset + icon?: Asset @Prop(TypeNumber(), products.string.Color) @Index(IndexKind.FullText) @Hidden() - color?: number + color?: number @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: CollectionSize + attachments?: CollectionSize } @Model(products.class.ProductVersion, documents.class.Project) @@ -119,31 +119,31 @@ export class TProductVersion extends TProject implements ProductVersion { @Prop(TypeNumber(), products.string.Major) @ReadOnly() - major!: number + major!: number @Prop(TypeNumber(), products.string.Minor) @ReadOnly() - minor!: number + minor!: number @Prop(TypeNumber(), products.string.Patch) @ReadOnly() - patch!: number + patch!: number @Prop(TypeString(), products.string.Codename) - codename?: string + codename?: string @Prop(TypeMarkup(), products.string.Description) @Index(IndexKind.FullText) - description!: Markup + description!: Markup @Prop(TypeRef(products.class.ProductVersion), products.string.ProductVersionParent) @Index(IndexKind.Indexed) @ReadOnly() - parent!: Ref + parent!: Ref @Prop(TypeProductVersionState(), products.string.ProductVersionState) @ReadOnly() - state!: ProductVersionState + state!: ProductVersionState @Prop( TypeAny( @@ -154,7 +154,7 @@ export class TProductVersion extends TProject implements ProductVersion { products.string.ChangeControl ) @ReadOnly() - changeControl?: Ref + changeControl?: Ref } @Mixin(products.mixin.ProductTypeData, products.class.Product) diff --git a/models/pulse/.eslintrc.js b/models/pulse/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/pulse/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/pulse/eslint.config.mjs b/models/pulse/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/pulse/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/pulse/package.json b/models/pulse/package.json index 6f3ecc736b..b68cf3db77 100644 --- a/models/pulse/package.json +++ b/models/pulse/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/questions/.eslintrc.js b/models/questions/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/models/questions/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/questions/eslint.config.mjs b/models/questions/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/models/questions/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/models/questions/package.json b/models/questions/package.json index 4f6c6e3882..a6f62c44ef 100644 --- a/models/questions/package.json +++ b/models/questions/package.json @@ -21,18 +21,18 @@ "_phase:validate": "compile validate" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", diff --git a/models/questions/src/doc-types/base.ts b/models/questions/src/doc-types/base.ts index 071f5f0740..fe4d263ae3 100644 --- a/models/questions/src/doc-types/base.ts +++ b/models/questions/src/doc-types/base.ts @@ -47,22 +47,22 @@ export class TQuestion> extends TAttachedD @Prop(TypeRank(), questions.string.Rank) @Index(IndexKind.Indexed) @Hidden() - rank!: Rank + rank!: Rank @Prop(TypeString(), questions.string.Question) @Index(IndexKind.FullText) - title: string = '' + title: string = '' @Prop(TypeRef(contact.mixin.Employee), questions.string.Owner) @Index(IndexKind.Indexed) - owner!: Ref + owner!: Ref @Prop(TypeTimestamp(), questions.string.ReleasedDate) @Index(IndexKind.Indexed) - releasedOn: Timestamp | null = null + releasedOn: Timestamp | null = null @Prop(TypeRef(contact.mixin.Employee), questions.string.ReleasedBy) - releasedBy: Ref | null = null + releasedBy: Ref | null = null // Should be overridden and decorated in child classes questionData!: QuestionData @@ -72,7 +72,8 @@ export class TQuestion> extends TAttachedD @Model(questions.class.Assessment, questions.class.Question) export class TAssessment, AssessmentData extends NonNullable> extends TQuestion - implements Assessment { + implements Assessment +{ // Should be overridden and decorated in child classes assessmentData!: AssessmentData } @@ -81,7 +82,8 @@ export class TAssessment, AssessmentData e @Model(questions.class.Answer, core.class.AttachedDoc, DOMAIN_QUESTIONS) export class TAnswer, AnswerData extends NonNullable> extends TAttachedDoc - implements Answer { + implements Answer +{ // Should be overridden and decorated in child classes question!: Ref diff --git a/models/questions/src/doc-types/mixin.ts b/models/questions/src/doc-types/mixin.ts index 2be7aa219e..5bdeb3f51d 100644 --- a/models/questions/src/doc-types/mixin.ts +++ b/models/questions/src/doc-types/mixin.ts @@ -24,7 +24,8 @@ import questions from '../plugin' @Mixin(questions.mixin.QuestionMixin, core.class.Class) export class TQuestionMixin, A extends Answer> extends TClass - implements QuestionMixin { + implements QuestionMixin +{ questionInit!: Resource> questionDataPresenter!: Resource> questionDataEditor!: Resource> diff --git a/models/questions/src/doc-types/questions/MultipleChoice.ts b/models/questions/src/doc-types/questions/MultipleChoice.ts index 7073326d44..d5a7b5179d 100644 --- a/models/questions/src/doc-types/questions/MultipleChoice.ts +++ b/models/questions/src/doc-types/questions/MultipleChoice.ts @@ -69,7 +69,8 @@ export class TMultipleChoiceQuestion extends TQuestion - implements MultipleChoiceQuestionAnswer { + implements MultipleChoiceQuestionAnswer +{ @Prop(TypeRef(questions.class.MultipleChoiceQuestion), questions.string.Question) @Index(IndexKind.Indexed) @Hidden() @@ -84,7 +85,8 @@ export class TMultipleChoiceQuestionAnswer @UX(questions.string.MultipleChoiceAssessment) export class TMultipleChoiceAssessment extends TAssessment - implements MultipleChoiceAssessment { + implements MultipleChoiceAssessment +{ @Prop(TypeMultipleChoiceAssessmentData(), questions.string.Assessment) declare assessmentData: MultipleChoiceAssessmentData } @@ -94,7 +96,8 @@ export class TMultipleChoiceAssessment @UX(questions.string.MultipleChoice) export class TMultipleChoiceAssessmentAnswer extends TAnswer - implements MultipleChoiceAssessmentAnswer { + implements MultipleChoiceAssessmentAnswer +{ @Prop(TypeRef(questions.class.MultipleChoiceAssessment), questions.string.Question) @Index(IndexKind.Indexed) @Hidden() diff --git a/models/questions/src/doc-types/questions/Ordering.ts b/models/questions/src/doc-types/questions/Ordering.ts index 633a7c93dc..0d80fa0bc7 100644 --- a/models/questions/src/doc-types/questions/Ordering.ts +++ b/models/questions/src/doc-types/questions/Ordering.ts @@ -69,7 +69,8 @@ export class TOrderingQuestion extends TQuestion implement @UX(questions.string.Ordering) export class TOrderingQuestionAnswer extends TAnswer - implements OrderingQuestionAnswer { + implements OrderingQuestionAnswer +{ @Prop(TypeRef(questions.class.OrderingQuestion), questions.string.Question) @Index(IndexKind.Indexed) @Hidden() @@ -84,7 +85,8 @@ export class TOrderingQuestionAnswer @UX(questions.string.OrderingAssessment) export class TOrderingAssessment extends TAssessment - implements OrderingAssessment { + implements OrderingAssessment +{ @Prop(TypeOrderingAssessmentData(), questions.string.Assessment) declare assessmentData: OrderingAssessmentData } @@ -94,7 +96,8 @@ export class TOrderingAssessment @UX(questions.string.Ordering) export class TOrderingAssessmentAnswer extends TAnswer - implements OrderingAssessmentAnswer { + implements OrderingAssessmentAnswer +{ @Prop(TypeRef(questions.class.OrderingAssessment), questions.string.Question) @Index(IndexKind.Indexed) @Hidden() diff --git a/models/questions/src/doc-types/questions/SingleChoice.ts b/models/questions/src/doc-types/questions/SingleChoice.ts index 01bff3f697..bf980cbb9d 100644 --- a/models/questions/src/doc-types/questions/SingleChoice.ts +++ b/models/questions/src/doc-types/questions/SingleChoice.ts @@ -69,7 +69,8 @@ export class TSingleChoiceQuestion extends TQuestion i @UX(questions.string.SingleChoice) export class TSingleChoiceQuestionAnswer extends TAnswer - implements SingleChoiceQuestionAnswer { + implements SingleChoiceQuestionAnswer +{ @Prop(TypeRef(questions.class.SingleChoiceQuestion), questions.string.Question) @Index(IndexKind.Indexed) @Hidden() @@ -84,7 +85,8 @@ export class TSingleChoiceQuestionAnswer @UX(questions.string.SingleChoiceAssessment) export class TSingleChoiceAssessment extends TAssessment - implements SingleChoiceAssessment { + implements SingleChoiceAssessment +{ @Prop(TypeSingleChoiceAssessmentData(), questions.string.Assessment) declare assessmentData: SingleChoiceAssessmentData } @@ -94,7 +96,8 @@ export class TSingleChoiceAssessment @UX(questions.string.SingleChoice) export class TSingleChoiceAssessmentAnswer extends TAnswer - implements SingleChoiceAssessmentAnswer { + implements SingleChoiceAssessmentAnswer +{ @Prop(TypeRef(questions.class.SingleChoiceAssessment), questions.string.Question) @Index(IndexKind.Indexed) @Hidden() diff --git a/models/rating/.eslintrc.js b/models/rating/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/rating/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/rating/eslint.config.mjs b/models/rating/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/rating/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/rating/package.json b/models/rating/package.json index a2045d7995..df7afdfaff 100644 --- a/models/rating/package.json +++ b/models/rating/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/recorder/.eslintrc.js b/models/recorder/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/recorder/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/recorder/eslint.config.mjs b/models/recorder/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/recorder/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/recorder/package.json b/models/recorder/package.json index c70e488e1d..953ca022bc 100644 --- a/models/recorder/package.json +++ b/models/recorder/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/model": "workspace:^0.7.17", diff --git a/models/recruit/.eslintrc.js b/models/recruit/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/recruit/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/recruit/eslint.config.mjs b/models/recruit/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/recruit/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/recruit/package.json b/models/recruit/package.json index daeb8935c2..3765305e8a 100644 --- a/models/recruit/package.json +++ b/models/recruit/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@anticrm/skillset": "^0.6.0", diff --git a/models/recruit/src/types.ts b/models/recruit/src/types.ts index dd41c9e01a..114e4e67b6 100644 --- a/models/recruit/src/types.ts +++ b/models/recruit/src/types.ts @@ -68,33 +68,33 @@ import recruit from './plugin' export class TVacancy extends TProject implements Vacancy { @Prop(TypeCollaborativeDoc(), recruit.string.FullDescription) @Index(IndexKind.FullText) - fullDescription!: MarkupBlobRef | null + fullDescription!: MarkupBlobRef | null @Prop(TypeCollection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeDate(), recruit.string.Due, recruit.icon.Calendar) - dueTo?: Timestamp + dueTo?: Timestamp @Prop(TypeString(), recruit.string.Location, recruit.icon.Location) @Index(IndexKind.FullText) - location?: string + location?: string @Prop(TypeRef(contact.class.Organization), recruit.string.Company, { icon: contact.icon.Company }) - company?: Ref + company?: Ref @Prop(TypeCollection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number @Prop(TypeString(), recruit.string.Vacancy) @Index(IndexKind.FullText) @Hidden() - number!: number + number!: number @Prop(TypeCollection(survey.class.Poll), survey.string.Polls) - polls?: Collection + polls?: Collection } @Mixin(recruit.mixin.Candidate, contact.class.Person) @@ -102,47 +102,47 @@ export class TVacancy extends TProject implements Vacancy { export class TCandidate extends TPerson implements Candidate { @Prop(TypeString(), recruit.string.Title) @Index(IndexKind.FullText) - title?: string + title?: string @Prop(TypeCollection(recruit.class.Applicant), recruit.string.Applications, { shortLabel: recruit.string.ApplicationsShort }) - applications?: number + applications?: number @Prop(TypeBoolean(), recruit.string.Onsite) - onsite?: boolean + onsite?: boolean @Prop(TypeBoolean(), recruit.string.Remote) - remote?: boolean + remote?: boolean @Prop(TypeString(), recruit.string.Source) @Index(IndexKind.FullText) - source?: string + source?: string @Prop(TypeCollection(tags.class.TagReference, recruit.string.SkillLabel), recruit.string.SkillsLabel, { icon: recruit.icon.Skills, schema: '3' }) - skills?: number + skills?: number @Prop(TypeCollection(recruit.class.Review, recruit.string.Review), recruit.string.Reviews) - reviews?: number + reviews?: number @Prop( TypeCollection(recruit.class.ApplicantMatch, getEmbeddedLabel('Vacancy match')), getEmbeddedLabel('Vacancy Matches') ) - vacancyMatch?: number + vacancyMatch?: number @Prop(TypeCollection(survey.class.Poll), survey.string.Polls) - polls?: Collection + polls?: Collection } @Mixin(recruit.mixin.VacancyList, contact.class.Organization) @UX(recruit.string.VacancyList, recruit.icon.RecruitApplication, 'CM', 'name') export class TVacancyList extends TOrganization implements VacancyList { @Prop(TypeCollection(recruit.class.Vacancy), recruit.string.Vacancies) - vacancies!: number + vacancies!: number } @Model(recruit.class.Applicant, task.class.Task) @@ -160,7 +160,7 @@ export class TApplicant extends TTask implements Applicant { declare space: Ref @Prop(TypeDate(), task.string.StartDate) - startDate!: Timestamp | null + startDate!: Timestamp | null @Prop(TypeRef(contact.mixin.Employee), recruit.string.AssignedRecruiter) @Index(IndexKind.Indexed) @@ -171,7 +171,7 @@ export class TApplicant extends TTask implements Applicant { declare status: Ref @Prop(TypeCollection(survey.class.Poll), survey.string.Polls) - polls?: Collection + polls?: Collection } @Model(recruit.class.ApplicantMatch, core.class.AttachedDoc, DOMAIN_TASK) @@ -184,19 +184,19 @@ export class TApplicantMatch extends TAttachedDoc implements ApplicantMatch { @Prop(TypeBoolean(), getEmbeddedLabel('Complete')) @ReadOnly() - complete!: boolean + complete!: boolean @Prop(TypeString(), getEmbeddedLabel('Vacancy')) @ReadOnly() - vacancy!: string + vacancy!: string @Prop(TypeString(), getEmbeddedLabel('Summary')) @ReadOnly() - summary!: string + summary!: string @Prop(TypeMarkup(), getEmbeddedLabel('Response')) @ReadOnly() - response!: string + response!: string } @Model(recruit.class.Review, calendar.class.Event) @@ -207,27 +207,27 @@ export class TReview extends TEvent implements Review { declare attachedTo: Ref @Prop(TypeString(), recruit.string.Review) - number!: number + number!: number @Prop(TypeString(), recruit.string.Verdict) @Index(IndexKind.FullText) - verdict!: string + verdict!: string @Prop(TypeRef(recruit.class.Applicant), recruit.string.Application, { icon: recruit.icon.Application }) - application?: Ref + application?: Ref @Prop(TypeRef(contact.class.Organization), recruit.string.Company, { icon: contact.icon.Company }) - company?: Ref + company?: Ref @Prop(TypeCollection(recruit.class.Opinion), recruit.string.Opinions) - opinions?: number + opinions?: number } @Model(recruit.class.Opinion, core.class.AttachedDoc, 'recruit' as Domain) @UX(recruit.string.Opinion, recruit.icon.Opinion, 'OPE') export class TOpinion extends TAttachedDoc implements Opinion { @Prop(TypeString(), task.string.TaskNumber) - number!: number + number!: number // We need to declare, to provide property with label @Prop(TypeRef(recruit.class.Review), recruit.string.Review) @@ -236,16 +236,16 @@ export class TOpinion extends TAttachedDoc implements Opinion { @Prop(TypeCollection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeCollection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number @Prop(TypeMarkup(), recruit.string.Description) - description!: Markup + description!: Markup @Prop(TypeString(), recruit.string.OpinionValue) - value!: string + value!: string } @Mixin(recruit.mixin.DefaultVacancyTypeData, recruit.class.Vacancy) diff --git a/models/request/.eslintrc.js b/models/request/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/request/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/request/eslint.config.mjs b/models/request/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/request/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/request/package.json b/models/request/package.json index 1cdfa2693c..8819d5d754 100644 --- a/models/request/package.json +++ b/models/request/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/request/src/index.ts b/models/request/src/index.ts index ed3526079a..408f374673 100644 --- a/models/request/src/index.ts +++ b/models/request/src/index.ts @@ -54,11 +54,11 @@ export const DOMAIN_REQUEST = 'request' as Domain export class TRequest extends TAttachedDoc implements Request { @Prop(ArrOf(TypeRef(contact.class.Person)), request.string.Requested) // @Index(IndexKind.Indexed) - requested!: Ref[] + requested!: Ref[] @Prop(ArrOf(TypeRef(contact.class.Person)), request.string.Approved) @ReadOnly() - approved!: Ref[] + approved!: Ref[] approvedDates?: Timestamp[] @@ -66,17 +66,17 @@ export class TRequest extends TAttachedDoc implements Request { @Prop(TypeString(), request.string.Status) // @Index(IndexKind.Indexed) - status!: RequestStatus + status!: RequestStatus tx!: Tx rejectedTx?: Tx @Prop(TypeRef(contact.class.Person), request.string.Rejected) @ReadOnly() - rejected?: Ref + rejected?: Ref @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number } @Mixin(request.mixin.RequestDecisionComment, chunter.class.ChatMessage) diff --git a/models/server-activity/.eslintrc.js b/models/server-activity/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-activity/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-activity/eslint.config.mjs b/models/server-activity/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-activity/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-activity/package.json b/models/server-activity/package.json index 8e4c3a0e4f..4a11763a5e 100644 --- a/models/server-activity/package.json +++ b/models/server-activity/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/server-ai-bot/.eslintrc.js b/models/server-ai-bot/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-ai-bot/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-ai-bot/eslint.config.mjs b/models/server-ai-bot/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-ai-bot/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-ai-bot/package.json b/models/server-ai-bot/package.json index d0ab15dcc8..e9d4b03169 100644 --- a/models/server-ai-bot/package.json +++ b/models/server-ai-bot/package.json @@ -18,19 +18,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/server-attachment/.eslintrc.js b/models/server-attachment/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-attachment/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-attachment/eslint.config.mjs b/models/server-attachment/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-attachment/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-attachment/package.json b/models/server-attachment/package.json index 0de9ecfcae..e95a062765 100644 --- a/models/server-attachment/package.json +++ b/models/server-attachment/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", diff --git a/models/server-calendar/.eslintrc.js b/models/server-calendar/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-calendar/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-calendar/eslint.config.mjs b/models/server-calendar/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-calendar/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-calendar/package.json b/models/server-calendar/package.json index 522a9040de..0e2c0a178a 100644 --- a/models/server-calendar/package.json +++ b/models/server-calendar/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-card/.eslintrc.js b/models/server-card/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-card/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-card/eslint.config.mjs b/models/server-card/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-card/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-card/package.json b/models/server-card/package.json index 4992262992..d8b4109e19 100644 --- a/models/server-card/package.json +++ b/models/server-card/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-chunter/.eslintrc.js b/models/server-chunter/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-chunter/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-chunter/eslint.config.mjs b/models/server-chunter/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-chunter/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-chunter/package.json b/models/server-chunter/package.json index 3c8cdbe1ea..5d3b8914e4 100644 --- a/models/server-chunter/package.json +++ b/models/server-chunter/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-collaboration/.eslintrc.js b/models/server-collaboration/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-collaboration/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-collaboration/eslint.config.mjs b/models/server-collaboration/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-collaboration/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-collaboration/package.json b/models/server-collaboration/package.json index 8a13645598..0b20cc2914 100644 --- a/models/server-collaboration/package.json +++ b/models/server-collaboration/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-contact/.eslintrc.js b/models/server-contact/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-contact/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-contact/eslint.config.mjs b/models/server-contact/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-contact/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-contact/package.json b/models/server-contact/package.json index 977295d19d..a177da2b91 100644 --- a/models/server-contact/package.json +++ b/models/server-contact/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-controlled-documents/.eslintrc.js b/models/server-controlled-documents/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-controlled-documents/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-controlled-documents/eslint.config.mjs b/models/server-controlled-documents/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-controlled-documents/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-controlled-documents/package.json b/models/server-controlled-documents/package.json index 61b1c13bac..3241692176 100644 --- a/models/server-controlled-documents/package.json +++ b/models/server-controlled-documents/package.json @@ -18,20 +18,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/models/server-core/.eslintrc.js b/models/server-core/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-core/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-core/eslint.config.mjs b/models/server-core/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-core/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-core/package.json b/models/server-core/package.json index 93df9c2e92..7468afc72a 100644 --- a/models/server-core/package.json +++ b/models/server-core/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-document/.eslintrc.js b/models/server-document/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-document/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-document/eslint.config.mjs b/models/server-document/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-document/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-document/package.json b/models/server-document/package.json index c7cfe8cd18..69ede72ae9 100644 --- a/models/server-document/package.json +++ b/models/server-document/package.json @@ -18,20 +18,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-drive/.eslintrc.js b/models/server-drive/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-drive/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-drive/eslint.config.mjs b/models/server-drive/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-drive/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-drive/package.json b/models/server-drive/package.json index a9f89f90d0..1fece8d574 100644 --- a/models/server-drive/package.json +++ b/models/server-drive/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-gmail/.eslintrc.js b/models/server-gmail/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-gmail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-gmail/eslint.config.mjs b/models/server-gmail/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-gmail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-gmail/package.json b/models/server-gmail/package.json index 679cd1ba2f..55f7053dd6 100644 --- a/models/server-gmail/package.json +++ b/models/server-gmail/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-guest/.eslintrc.js b/models/server-guest/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-guest/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-guest/eslint.config.mjs b/models/server-guest/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-guest/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-guest/package.json b/models/server-guest/package.json index 62b6e451ad..0bc4fbd326 100644 --- a/models/server-guest/package.json +++ b/models/server-guest/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-hr/.eslintrc.js b/models/server-hr/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-hr/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-hr/eslint.config.mjs b/models/server-hr/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-hr/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-hr/package.json b/models/server-hr/package.json index 4bebcb67ea..ba45b54e6e 100644 --- a/models/server-hr/package.json +++ b/models/server-hr/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-inventory/.eslintrc.js b/models/server-inventory/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-inventory/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-inventory/eslint.config.mjs b/models/server-inventory/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-inventory/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-inventory/package.json b/models/server-inventory/package.json index 58b1fd764b..5b25d25264 100644 --- a/models/server-inventory/package.json +++ b/models/server-inventory/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-lead/.eslintrc.js b/models/server-lead/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-lead/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-lead/eslint.config.mjs b/models/server-lead/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-lead/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-lead/package.json b/models/server-lead/package.json index 7da79b88b4..11a7439e6c 100644 --- a/models/server-lead/package.json +++ b/models/server-lead/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-love/.eslintrc.js b/models/server-love/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-love/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-love/eslint.config.mjs b/models/server-love/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-love/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-love/package.json b/models/server-love/package.json index 6fbf02ee3c..2cab5bf9b6 100644 --- a/models/server-love/package.json +++ b/models/server-love/package.json @@ -18,19 +18,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/models/server-notification/.eslintrc.js b/models/server-notification/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-notification/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-notification/eslint.config.mjs b/models/server-notification/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-notification/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-notification/package.json b/models/server-notification/package.json index 1b13c69ae9..f6977f019b 100644 --- a/models/server-notification/package.json +++ b/models/server-notification/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/server-process/.eslintrc.js b/models/server-process/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-process/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-process/eslint.config.mjs b/models/server-process/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-process/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-process/package.json b/models/server-process/package.json index f537fba069..a1913be7b3 100644 --- a/models/server-process/package.json +++ b/models/server-process/package.json @@ -18,20 +18,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-products/.eslintrc.js b/models/server-products/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-products/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-products/eslint.config.mjs b/models/server-products/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-products/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-products/package.json b/models/server-products/package.json index 95b5b36b4a..3306a17064 100644 --- a/models/server-products/package.json +++ b/models/server-products/package.json @@ -18,20 +18,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-recruit/.eslintrc.js b/models/server-recruit/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-recruit/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-recruit/eslint.config.mjs b/models/server-recruit/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-recruit/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-recruit/package.json b/models/server-recruit/package.json index 9a918207ec..40ecf7c730 100644 --- a/models/server-recruit/package.json +++ b/models/server-recruit/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-request/.eslintrc.js b/models/server-request/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-request/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-request/eslint.config.mjs b/models/server-request/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-request/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-request/package.json b/models/server-request/package.json index 12e9b16062..1d8828fa3e 100644 --- a/models/server-request/package.json +++ b/models/server-request/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-setting/.eslintrc.js b/models/server-setting/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-setting/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-setting/eslint.config.mjs b/models/server-setting/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-setting/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-setting/package.json b/models/server-setting/package.json index c0ee7b0a88..e9d0da958c 100644 --- a/models/server-setting/package.json +++ b/models/server-setting/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-tags/.eslintrc.js b/models/server-tags/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-tags/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-tags/eslint.config.mjs b/models/server-tags/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-tags/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-tags/package.json b/models/server-tags/package.json index 28bf98da66..34c97fd6ef 100644 --- a/models/server-tags/package.json +++ b/models/server-tags/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-task/.eslintrc.js b/models/server-task/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-task/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-task/eslint.config.mjs b/models/server-task/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-task/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-task/package.json b/models/server-task/package.json index 4143bdeb48..012be13c41 100644 --- a/models/server-task/package.json +++ b/models/server-task/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-telegram/.eslintrc.js b/models/server-telegram/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-telegram/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-telegram/eslint.config.mjs b/models/server-telegram/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-telegram/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-telegram/package.json b/models/server-telegram/package.json index 7a2e527432..967f8a6bca 100644 --- a/models/server-telegram/package.json +++ b/models/server-telegram/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-templates/.eslintrc.js b/models/server-templates/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-templates/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-templates/eslint.config.mjs b/models/server-templates/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-templates/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-templates/package.json b/models/server-templates/package.json index 05adc0ae8e..9aa49f9965 100644 --- a/models/server-templates/package.json +++ b/models/server-templates/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-time/.eslintrc.js b/models/server-time/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-time/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-time/eslint.config.mjs b/models/server-time/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-time/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-time/package.json b/models/server-time/package.json index 7548481b93..1133147c50 100644 --- a/models/server-time/package.json +++ b/models/server-time/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-tracker/.eslintrc.js b/models/server-tracker/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-tracker/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-tracker/eslint.config.mjs b/models/server-tracker/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-tracker/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-tracker/package.json b/models/server-tracker/package.json index 317c9a527f..97c0b663f9 100644 --- a/models/server-tracker/package.json +++ b/models/server-tracker/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-training/.eslintrc.js b/models/server-training/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-training/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-training/eslint.config.mjs b/models/server-training/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-training/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-training/package.json b/models/server-training/package.json index 4896c70ea6..7ec566e340 100644 --- a/models/server-training/package.json +++ b/models/server-training/package.json @@ -18,20 +18,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/server-view/.eslintrc.js b/models/server-view/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/server-view/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/server-view/eslint.config.mjs b/models/server-view/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/server-view/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/server-view/package.json b/models/server-view/package.json index 3419066ec7..b8c5797080 100644 --- a/models/server-view/package.json +++ b/models/server-view/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/setting/.eslintrc.js b/models/setting/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/setting/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/setting/eslint.config.mjs b/models/setting/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/setting/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/setting/package.json b/models/setting/package.json index 006fa7b096..2a437c6d9e 100644 --- a/models/setting/package.json +++ b/models/setting/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/setting/src/index.ts b/models/setting/src/index.ts index f0c0038ea8..1ea9ec6207 100644 --- a/models/setting/src/index.ts +++ b/models/setting/src/index.ts @@ -121,7 +121,7 @@ export class TInviteSettings extends TConfiguration implements InviteSettings { @UX(setting.string.RoleCapabilitySettings) export class TRoleCapabilitySettings extends TConfiguration implements RoleCapabilitySettings { @Prop(TypeRecord(), setting.string.RoleCapabilitySettings) - roleByCapability!: Record + roleByCapability!: Record } @Model(setting.class.OfficeSettings, core.class.Configuration, DOMAIN_SETTING) diff --git a/models/support/.eslintrc.js b/models/support/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/support/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/support/eslint.config.mjs b/models/support/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/support/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/support/package.json b/models/support/package.json index b85e6787cf..aaa13326b6 100644 --- a/models/support/package.json +++ b/models/support/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/support/src/index.ts b/models/support/src/index.ts index c85f35f4d9..f4c9f0a12d 100644 --- a/models/support/src/index.ts +++ b/models/support/src/index.ts @@ -33,7 +33,7 @@ export const DOMAIN_SUPPORT = 'support' as Domain @Model(support.class.SupportConversation, preference.class.Preference) export class TSupportConversation extends TPreference implements SupportConversation { @Index(IndexKind.Indexed) - conversationId!: string + conversationId!: string hasUnreadMessages!: boolean } diff --git a/models/survey/.eslintrc.js b/models/survey/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/survey/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/survey/eslint.config.mjs b/models/survey/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/survey/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/survey/package.json b/models/survey/package.json index 76748332e6..3bea38dc93 100644 --- a/models/survey/package.json +++ b/models/survey/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/survey/src/types.ts b/models/survey/src/types.ts index effa6b10ad..f8a6d18d42 100644 --- a/models/survey/src/types.ts +++ b/models/survey/src/types.ts @@ -38,31 +38,31 @@ export const DOMAIN_SURVEY = 'survey' as Domain export class TSurvey extends TDoc implements Survey { @Prop(TypeString(), survey.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeString(), survey.string.Prompt) - prompt!: string + prompt!: string @Prop(ArrOf(TypeRecord()), survey.string.Questions) - questions?: Question[] + questions?: Question[] } @Model(survey.class.Poll, core.class.Doc, DOMAIN_SURVEY) @UX(survey.string.Poll, survey.icon.Poll, 'POLL', undefined, undefined, survey.string.Polls) export class TPoll extends TAttachedDoc implements Poll { @Prop(TypeRef(survey.class.Survey), survey.string.Survey) - survey!: Ref + survey!: Ref @Prop(TypeString(), survey.string.Name) - name!: string + name!: string @Prop(TypeString(), survey.string.Prompt) - prompt!: string + prompt!: string @Prop(ArrOf(TypeRecord()), getEmbeddedLabel('Questions')) @Hidden() - questions?: Question[] + questions?: Question[] @Prop(TypeBoolean(), survey.string.Completed) - isCompleted?: boolean + isCompleted?: boolean } diff --git a/models/tags/.eslintrc.js b/models/tags/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/tags/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/tags/eslint.config.mjs b/models/tags/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/tags/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/tags/package.json b/models/tags/package.json index 577ee82300..d65af6d7a7 100644 --- a/models/tags/package.json +++ b/models/tags/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/tags/src/index.ts b/models/tags/src/index.ts index ffc707da9b..c5f1f2fc73 100644 --- a/models/tags/src/index.ts +++ b/models/tags/src/index.ts @@ -38,23 +38,23 @@ export const DOMAIN_TAGS = 'tags' as Domain export class TTagElement extends TDoc implements TagElement { @Prop(TypeString(), tags.string.TitleLabel) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeRef(core.class.Class), tags.string.TargetClassLabel) - targetClass!: Ref> + targetClass!: Ref> @Prop(TypeString(), tags.string.DescriptionLabel) @Index(IndexKind.FullText) - description!: string + description!: string @Prop(TypeString(), tags.string.ColorLabel) - color!: number + color!: number @Prop(TypeRef(tags.class.TagCategory), tags.string.CategoryLabel) - category!: Ref + category!: Ref @Prop(TypeNumber(), tags.string.TagReference) - refCount?: number + refCount?: number } @Model(tags.class.TagReference, core.class.AttachedDoc, DOMAIN_TAGS) @@ -62,36 +62,36 @@ export class TTagElement extends TDoc implements TagElement { export class TTagReference extends TAttachedDoc implements TagReference { @Prop(TypeString(), tags.string.TitleLabel) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeRef(tags.class.TagElement), tags.string.TagLabel) @Index(IndexKind.Indexed) - tag!: Ref + tag!: Ref @Prop(TypeString(), tags.string.ColorLabel) - color!: number + color!: number @Prop(TypeNumber(), tags.string.Weight) - weight!: InitialKnowledge | MeaningfullKnowledge | ExpertKnowledge + weight!: InitialKnowledge | MeaningfullKnowledge | ExpertKnowledge } @Model(tags.class.TagCategory, core.class.Doc, DOMAIN_TAGS) @UX(tags.string.TargetCategoryLabel) export class TTagCategory extends TDoc implements TagCategory { @Prop(TypeString(), tags.string.AssetLabel) - icon!: Asset + icon!: Asset @Prop(TypeString(), tags.string.CategoryLabel) - label!: IntlString + label!: IntlString @Prop(TypeString(), tags.string.CategoryTargetClass) - targetClass!: Ref> + targetClass!: Ref> @Prop(ArrOf(TypeRef(core.class.TypeString)), tags.string.CategoryTagsLabel) - tags!: string[] + tags!: string[] @Prop(TypeString(), tags.string.DefaultLabel) - default!: boolean + default!: boolean } export function createModel (builder: Builder): void { diff --git a/models/task/.eslintrc.js b/models/task/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/task/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/task/eslint.config.mjs b/models/task/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/task/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/task/package.json b/models/task/package.json index 77536479f8..a501acc195 100644 --- a/models/task/package.json +++ b/models/task/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/models/task/src/index.ts b/models/task/src/index.ts index 9259c85798..cbff7cc8de 100644 --- a/models/task/src/index.ts +++ b/models/task/src/index.ts @@ -96,46 +96,46 @@ export const DOMAIN_TASK = 'task' as Domain export class TTask extends TAttachedDoc implements Task { @Prop(TypeRef(core.class.Status), task.string.TaskState, { _id: task.attribute.State }) @Index(IndexKind.Indexed) - status!: Ref + status!: Ref @Prop(TypeRef(task.class.TaskType), task.string.TaskType) @Index(IndexKind.Indexed) @ReadOnly() - kind!: Ref + kind!: Ref @Prop(TypeString(), task.string.TaskNumber) @Index(IndexKind.FullText) @Hidden() - number!: number + number!: number @Prop(TypeRef(contact.mixin.Employee), task.string.TaskAssignee) - assignee!: Ref | null + assignee!: Ref | null @Prop(TypeDate(), task.string.DueDate, { editor: task.component.DueDateEditor }) - dueDate!: Timestamp | null + dueDate!: Timestamp | null @Prop(TypeRank(), task.string.Rank) @Index(IndexKind.IndexedDsc) @Hidden() - rank!: Rank + rank!: Rank @Prop(Collection(tags.class.TagReference, task.string.TaskLabels), task.string.TaskLabels) - labels?: number + labels?: number @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeBoolean(), getEmbeddedLabel('isDone')) @Hidden() - isDone?: boolean + isDone?: boolean @Prop(TypeString(), task.string.Identifier) @ReadOnly() @Index(IndexKind.Indexed) - identifier!: string + identifier!: string } @Mixin(task.mixin.KanbanCard, core.class.Class) @@ -179,52 +179,52 @@ export class TProjectType extends TSpaceType implements ProjectType { @Prop(TypeString(), task.string.Description) @Index(IndexKind.FullText) - description!: string + description!: string @Prop(ArrOf(TypeRef(task.class.TaskType)), getEmbeddedLabel('Tasks')) - tasks!: Ref[] + tasks!: Ref[] @Prop(ArrOf(TypeRecord()), getEmbeddedLabel('Project statuses')) - statuses!: ProjectStatus[] + statuses!: ProjectStatus[] @Prop(TypeRef(core.class.Class), getEmbeddedLabel('Target Class')) declare targetClass: Ref> @Prop(TypeBoolean(), getEmbeddedLabel('Classic')) - classic!: boolean + classic!: boolean } @Model(task.class.TaskType, core.class.Doc, DOMAIN_MODEL) export class TTaskType extends TDoc implements TaskType { @Prop(TypeString(), getEmbeddedLabel('Name')) - name!: string + name!: string @Prop(TypeRef(task.class.TaskTypeDescriptor), getEmbeddedLabel('Descriptor')) - descriptor!: Ref + descriptor!: Ref @Prop(TypeRef(task.class.ProjectType), getEmbeddedLabel('Task class')) - parent!: Ref // Base class for task + parent!: Ref // Base class for task @Prop(TypeString(), getEmbeddedLabel('Kind')) - kind!: TaskTypeKind + kind!: TaskTypeKind @Prop(ArrOf(TypeRef(task.class.TaskType)), getEmbeddedLabel('Parent')) - allowedAsChildOf!: Ref[] // In case of specified, task type is for sub-tasks + allowedAsChildOf!: Ref[] // In case of specified, task type is for sub-tasks @Prop(TypeRef(core.class.Class), getEmbeddedLabel('Task class')) - ofClass!: Ref> // Base class for task + ofClass!: Ref> // Base class for task @Prop(TypeRef(core.class.Class), getEmbeddedLabel('Task target class')) - targetClass!: Ref> // Class or Mixin mixin to hold all user defined attributes. + targetClass!: Ref> // Class or Mixin mixin to hold all user defined attributes. @Prop(ArrOf(TypeRef(core.class.Status)), getEmbeddedLabel('Task statuses')) - statuses!: Ref[] + statuses!: Ref[] @Prop(TypeRef(core.class.Class), getEmbeddedLabel('Task status class')) - statusClass!: Ref> + statusClass!: Ref> @Prop(TypeRef(core.class.StatusCategory), getEmbeddedLabel('Task status categories')) - statusCategories!: Ref[] + statusCategories!: Ref[] } @Model(task.class.ProjectTypeDescriptor, core.class.SpaceTypeDescriptor, DOMAIN_MODEL) diff --git a/models/telegram/.eslintrc.js b/models/telegram/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/telegram/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/telegram/eslint.config.mjs b/models/telegram/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/telegram/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/telegram/package.json b/models/telegram/package.json index 62214aa08c..fdce40eb8d 100644 --- a/models/telegram/package.json +++ b/models/telegram/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/telegram/src/index.ts b/models/telegram/src/index.ts index 18c09eb1d8..3d7f2c5ed6 100644 --- a/models/telegram/src/index.ts +++ b/models/telegram/src/index.ts @@ -63,16 +63,16 @@ export class TTelegramMessage extends TAttachedDoc implements TelegramMessage { @Prop(TypeString(), telegram.string.Content) @Index(IndexKind.FullText) - content!: string + content!: string @Prop(TypeBoolean(), telegram.string.Incoming) - incoming!: boolean + incoming!: boolean @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeTimestamp(), core.string.Modified) - sendOn!: Timestamp + sendOn!: Timestamp } @Model(telegram.class.NewMessage, core.class.AttachedDoc, DOMAIN_TELEGRAM) @@ -80,20 +80,20 @@ export class TTelegramMessage extends TAttachedDoc implements TelegramMessage { export class TNewTelegramMessage extends TAttachedDoc implements NewTelegramMessage { @Prop(TypeString(), telegram.string.Content) @Index(IndexKind.FullText) - content!: string + content!: string @Prop(TypeString(), telegram.string.Status) - status!: 'new' | 'sent' + status!: 'new' | 'sent' @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number } @Model(telegram.class.SharedMessages, core.class.AttachedDoc, DOMAIN_TELEGRAM) @UX(telegram.string.SharedMessages) export class TSharedTelegramMessages extends TAttachedDoc implements SharedTelegramMessages { @Prop(ArrOf(TypeSharedMessage()), telegram.string.Messages) - messages!: SharedTelegramMessage[] + messages!: SharedTelegramMessage[] } export function createModel (builder: Builder): void { diff --git a/models/templates/.eslintrc.js b/models/templates/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/templates/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/templates/eslint.config.mjs b/models/templates/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/templates/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/templates/package.json b/models/templates/package.json index c19b00eea6..a4a7168d8a 100644 --- a/models/templates/package.json +++ b/models/templates/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/templates/src/index.ts b/models/templates/src/index.ts index 0073a90c50..bb91d97047 100644 --- a/models/templates/src/index.ts +++ b/models/templates/src/index.ts @@ -41,11 +41,11 @@ export const DOMAIN_TEMPLATES = 'templates' as Domain export class TMessageTemplate extends TDoc implements MessageTemplate { @Prop(TypeString(), templates.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeMarkup(), templates.string.Message) @Index(IndexKind.FullText) - message!: Markup + message!: Markup } @Model(templates.class.TemplateCategory, core.class.Space) diff --git a/models/test-management/.eslintrc.js b/models/test-management/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/test-management/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/test-management/eslint.config.mjs b/models/test-management/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/test-management/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/test-management/package.json b/models/test-management/package.json index d07ff94c61..03674151ab 100644 --- a/models/test-management/package.json +++ b/models/test-management/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", diff --git a/models/test-management/src/types.ts b/models/test-management/src/types.ts index 084f2d1617..d250f46cdf 100644 --- a/models/test-management/src/types.ts +++ b/models/test-management/src/types.ts @@ -101,7 +101,7 @@ export class TTypeTestCaseStatus extends TType {} export class TTestProject extends TTypedSpace implements TestProject { @Prop(TypeMarkup(), testManagement.string.FullDescription) @Index(IndexKind.FullText) - fullDescription?: string + fullDescription?: string } @Mixin(testManagement.mixin.DefaultProjectTypeData, testManagement.class.TestProject) @@ -118,19 +118,19 @@ export class TDefaultProjectTypeData extends TTestProject implements RolesAssign export class TTestSuite extends TDoc implements TestSuite { @Prop(TypeString(), testManagement.string.SuiteName) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeMarkup(), testManagement.string.SuiteDescription) @Index(IndexKind.FullText) - description?: string + description?: string @Prop(TypeRef(testManagement.class.TestSuite), testManagement.string.TestSuite) - parent!: Ref + parent!: Ref @Prop(Collection(testManagement.class.TestCase), testManagement.string.TestCases, { shortLabel: testManagement.string.TestCase }) - testCases?: CollectionSize + testCases?: CollectionSize declare space: Ref } @@ -161,32 +161,32 @@ export class TTestCase extends TAttachedDoc implements TestCase { @Prop(TypeString(), testManagement.string.TestName) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeCollaborativeDoc(), testManagement.string.FullDescription) @Index(IndexKind.FullText) - description!: MarkupBlobRef | null + description!: MarkupBlobRef | null @Prop(TypeTestCaseType(), testManagement.string.TestType) @ReadOnly() - type!: TestCaseType + type!: TestCaseType @Prop(TypeTestCasePriority(), testManagement.string.TestPriority) @ReadOnly() - priority!: TestCasePriority + priority!: TestCasePriority @Prop(TypeTestCaseStatus(), testManagement.string.TestStatus) @ReadOnly() - status!: TestCaseStatus + status!: TestCaseStatus @Prop(TypeRef(contact.mixin.Employee), testManagement.string.TestAssignee) - assignee!: Ref + assignee!: Ref @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: CollectionSize + attachments?: CollectionSize @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number } @Model(testManagement.class.TestRun, core.class.Doc, DOMAIN_TEST_MANAGEMENT) @@ -194,19 +194,19 @@ export class TTestCase extends TAttachedDoc implements TestCase { export class TTestRun extends TDoc implements TestRun { @Prop(TypeString(), testManagement.string.TestRunName) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeCollaborativeDoc(), testManagement.string.FullDescription) @Index(IndexKind.FullText) - description!: MarkupBlobRef | null + description!: MarkupBlobRef | null @Prop(TypeDate(DateRangeMode.DATETIME), testManagement.string.DueDate) - dueDate?: Timestamp + dueDate?: Timestamp @Prop(Collection(testManagement.class.TestResult), testManagement.string.TestResult, { shortLabel: testManagement.string.TestResult }) - results?: CollectionSize + results?: CollectionSize } /** @public */ @@ -242,32 +242,32 @@ export class TTestResult extends TAttachedDoc implements TestResult { @Prop(TypeString(), testManagement.string.TestRunName) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeCollaborativeDoc(), testManagement.string.FullDescription) @Index(IndexKind.FullText) - description!: MarkupBlobRef | null + description!: MarkupBlobRef | null @Prop(TypeRef(testManagement.class.TestCase), testManagement.string.TestCase) - testCase!: Ref + testCase!: Ref @Prop(TypeRef(testManagement.class.TestSuite), testManagement.string.TestSuite) @Index(IndexKind.Indexed) - testSuite?: Ref + testSuite?: Ref @Prop(TypeTestRunStatus(), testManagement.string.TestRunStatus) @Index(IndexKind.Indexed) - status?: TestRunStatus + status?: TestRunStatus @Prop(TypeRef(contact.mixin.Employee), testManagement.string.TestAssignee) @Index(IndexKind.Indexed) - assignee?: Ref + assignee?: Ref @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: CollectionSize + attachments?: CollectionSize @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments?: number + comments?: number } @Model(testManagement.class.TestPlan, core.class.Doc, DOMAIN_TEST_MANAGEMENT) @@ -275,16 +275,16 @@ export class TTestResult extends TAttachedDoc implements TestResult { export class TTestPlan extends TDoc implements TestPlan { @Prop(TypeString(), testManagement.string.Name) @Index(IndexKind.FullText) - name!: string + name!: string @Prop(TypeCollaborativeDoc(), testManagement.string.FullDescription) @Index(IndexKind.FullText) - description!: MarkupBlobRef | null + description!: MarkupBlobRef | null @Prop(Collection(testManagement.class.TestPlanItem), testManagement.string.TestCase, { shortLabel: testManagement.string.TestCase }) - results?: CollectionSize + results?: CollectionSize } @Model(testManagement.class.TestPlanItem, core.class.AttachedDoc, DOMAIN_TEST_MANAGEMENT) @@ -309,13 +309,13 @@ export class TTestPlanItem extends TAttachedDoc implements TestPlanItem { override collection: 'items' = 'items' @Prop(TypeRef(testManagement.class.TestCase), testManagement.string.TestCase) - testCase!: Ref + testCase!: Ref @Prop(TypeRef(testManagement.class.TestSuite), testManagement.string.TestSuite) @Index(IndexKind.Indexed) - testSuite?: Ref + testSuite?: Ref @Prop(TypeRef(contact.mixin.Employee), testManagement.string.TestAssignee) @Index(IndexKind.Indexed) - assignee?: Ref + assignee?: Ref } diff --git a/models/text-editor/.eslintrc.js b/models/text-editor/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/text-editor/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/text-editor/eslint.config.mjs b/models/text-editor/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/text-editor/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/text-editor/package.json b/models/text-editor/package.json index 2305441cd6..a6fb40218d 100644 --- a/models/text-editor/package.json +++ b/models/text-editor/package.json @@ -19,20 +19,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@hcengineering/text-editor-resources": "workspace:^0.7.0", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/time/.eslintrc.js b/models/time/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/time/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/time/eslint.config.mjs b/models/time/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/time/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/time/package.json b/models/time/package.json index 41672addfe..29ae77758f 100644 --- a/models/time/package.json +++ b/models/time/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/models/time/src/index.ts b/models/time/src/index.ts index 4e64b04b08..5f5c0c44b8 100644 --- a/models/time/src/index.ts +++ b/models/time/src/index.ts @@ -101,41 +101,41 @@ export class TTypeToDoPriority extends TType {} @UX(time.string.ToDo, time.icon.Planned) export class TToDo extends TAttachedDoc implements ToDo { @Prop(TypeDate(DateRangeMode.DATE), task.string.DueDate) - dueDate?: number | null | undefined + dueDate?: number | null | undefined @Prop(TypeToDoPriority(), time.string.Priority) @Index(IndexKind.Indexed) - priority!: ToDoPriority + priority!: ToDoPriority visibility!: Visibility @Prop(TypeRef(core.class.Space), core.string.Space) - attachedSpace?: Ref | undefined + attachedSpace?: Ref | undefined @Prop(TypeString(), calendarPlugin.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeMarkup(), calendarPlugin.string.Description) @Index(IndexKind.FullText) - description!: Markup + description!: Markup doneOn!: Timestamp | null @Prop(TypeRef(contactPlugin.mixin.Employee), contactPlugin.string.Employee) @Index(IndexKind.Indexed) - user!: Ref + user!: Ref @Prop(Collection(time.class.WorkSlot, time.string.WorkSlot), time.string.WorkSlot) - workslots!: number + workslots!: number @Prop(Collection(tags.class.TagReference, tags.string.TagLabel), tags.string.Tags) - labels?: number | undefined + labels?: number | undefined @Prop(TypeRank(), core.string.Rank) @Index(IndexKind.Indexed) @Hidden() - rank!: Rank + rank!: Rank } @Model(time.class.ProjectToDo, time.class.ToDo) diff --git a/models/tracker/.eslintrc.js b/models/tracker/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/tracker/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/tracker/eslint.config.mjs b/models/tracker/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/tracker/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/tracker/package.json b/models/tracker/package.json index edff0a2f7e..0f90763e49 100644 --- a/models/tracker/package.json +++ b/models/tracker/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/models/tracker/src/types.ts b/models/tracker/src/types.ts index 853e19450c..4bc33e3049 100644 --- a/models/tracker/src/types.ts +++ b/models/tracker/src/types.ts @@ -126,25 +126,25 @@ export class TTypeMilestoneStatus extends TType {} export class TProject extends TTaskProject implements Project { @Prop(TypeString(), tracker.string.ProjectIdentifier) @Index(IndexKind.FullText) - identifier!: IntlString + identifier!: IntlString @Prop(TypeNumber(), tracker.string.Number) @Hidden() - sequence!: number + sequence!: number @Prop(TypeRef(tracker.class.IssueStatus), tracker.string.DefaultIssueStatus) - defaultIssueStatus?: Ref + defaultIssueStatus?: Ref @Prop(TypeRef(contact.mixin.Employee), tracker.string.DefaultAssignee) - defaultAssignee!: Ref + defaultAssignee!: Ref declare defaultTimeReportDay: TimeReportDayType @Prop(Collection(tracker.class.RelatedIssueTarget), tracker.string.RelatedIssues) - relatedIssueTargets!: number + relatedIssueTargets!: number @Prop(TypeRecord(), tracker.string.WorkingDaysConfig) - workingDaysConfig?: WorkingDaysConfig + workingDaysConfig?: WorkingDaysConfig } /** * @public @@ -154,7 +154,7 @@ export class TProject extends TTaskProject implements Project { @UX(tracker.string.RelatedIssues) export class TRelatedIssueTarget extends TDoc implements RelatedIssueTarget { @Prop(TypeRef(tracker.class.Project), tracker.string.Project) - target!: Ref + target!: Ref rule!: RelatedClassRule | RelatedSpaceRule } @@ -191,11 +191,11 @@ export class TIssue extends TTask implements Issue { @Prop(TypeString(), tracker.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeCollaborativeDoc(), tracker.string.Description) @Index(IndexKind.FullText) - description!: MarkupBlobRef | null + description!: MarkupBlobRef | null @Prop(TypeRef(tracker.class.IssueStatus), tracker.string.Status, { _id: tracker.attribute.IssueStatus, @@ -208,7 +208,7 @@ export class TIssue extends TTask implements Issue { iconComponent: tracker.activity.PriorityIcon }) @Index(IndexKind.Indexed) - priority!: IssuePriority + priority!: IssuePriority @Prop(TypeNumber(), tracker.string.Number) @Index(IndexKind.FullText) @@ -221,17 +221,17 @@ export class TIssue extends TTask implements Issue { @Prop(TypeRef(tracker.class.Component), tracker.string.Component, { icon: tracker.icon.Component }) @Index(IndexKind.Indexed) - component!: Ref | null + component!: Ref | null @Prop(Collection(tracker.class.Issue), tracker.string.SubIssues) - subIssues!: number + subIssues!: number @Prop(ArrOf(TypeRef(core.class.TypeRelatedDocument)), tracker.string.BlockedBy) - blockedBy!: RelatedDocument[] + blockedBy!: RelatedDocument[] @Prop(ArrOf(TypeRef(core.class.TypeRelatedDocument)), tracker.string.RelatedTo) @Index(IndexKind.Indexed) - relations!: RelatedDocument[] + relations!: RelatedDocument[] parents!: IssueParentInfo[] @@ -257,29 +257,29 @@ export class TIssue extends TTask implements Issue { // inline ControlPanel field; a Gantt context-menu shortcut is a // separate follow-up, see Out-of-scope section). @Prop(TypeDate(DateRangeMode.DATETIME), tracker.string.Deadline) - deadline?: Timestamp | null + deadline?: Timestamp | null @Prop(TypeRef(tracker.class.Milestone), tracker.string.Milestone, { icon: tracker.icon.Milestone }) @Index(IndexKind.Indexed) - milestone!: Ref | null + milestone!: Ref | null @Prop(TypeEstimation(), tracker.string.Estimation) - estimation!: number + estimation!: number @Prop(TypeReportedTime(), tracker.string.ReportedTime) - reportedTime!: number + reportedTime!: number @Prop(TypeRemainingTime(), tracker.string.RemainingTime) @ReadOnly() - remainingTime!: number + remainingTime!: number @Prop(Collection(tracker.class.TimeSpendReport), tracker.string.TimeSpendReports) - reports!: number + reports!: number declare childInfo: IssueChildInfo[] @Prop(Collection(time.class.ToDo), getEmbeddedLabel('Action Items')) - todos?: CollectionSize + todos?: CollectionSize /** * Auto-Scheduling-Toggle. @@ -292,7 +292,7 @@ export class TIssue extends TTask implements Issue { */ @Prop(TypeString(), tracker.string.SchedulingMode) @Hidden() - schedulingMode?: 'auto' | 'manual' + schedulingMode?: 'auto' | 'manual' } /** * @public @@ -310,49 +310,49 @@ export class TIssue extends TTask implements Issue { export class TIssueTemplate extends TDoc implements IssueTemplate { @Prop(TypeString(), tracker.string.Title) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeMarkup(), tracker.string.Description) @Index(IndexKind.FullText) - description!: Markup + description!: Markup @Prop(TypeIssuePriority(), tracker.string.Priority) - priority!: IssuePriority + priority!: IssuePriority @Prop(TypeRef(contact.class.Person), tracker.string.Assignee) - assignee!: Ref | null + assignee!: Ref | null @Prop(TypeRef(tracker.class.Component), tracker.string.Component) - component!: Ref | null + component!: Ref | null @Prop(ArrOf(TypeRef(tags.class.TagElement)), tracker.string.Labels) - labels?: Ref[] + labels?: Ref[] @Prop(TypeRef(task.class.TaskType), task.string.TaskType) - kind?: Ref + kind?: Ref declare space: Ref @Prop(TypeDate(DateRangeMode.DATETIME), tracker.string.DueDate) - dueDate!: Timestamp | null + dueDate!: Timestamp | null @Prop(TypeRef(tracker.class.Milestone), tracker.string.Milestone) - milestone!: Ref | null + milestone!: Ref | null @Prop(TypeEstimation(), tracker.string.Estimation) - estimation!: number + estimation!: number @Prop(ArrOf(TypeRef(tracker.class.IssueTemplate)), tracker.string.IssueTemplate) - children!: IssueTemplateChild[] + children!: IssueTemplateChild[] @Prop(Collection(chunter.class.ChatMessage), tracker.string.Comments) - comments!: number + comments!: number @Prop(Collection(attachment.class.Attachment), tracker.string.Attachments) - attachments!: number + attachments!: number @Prop(ArrOf(TypeRef(core.class.TypeRelatedDocument)), tracker.string.RelatedTo) - relations!: RelatedDocument[] + relations!: RelatedDocument[] } /** * @public @@ -365,16 +365,16 @@ export class TTimeSpendReport extends TAttachedDoc implements TimeSpendReport { declare attachedTo: Ref @Prop(TypeRef(contact.mixin.Employee), contact.string.Employee) - employee!: Ref + employee!: Ref @Prop(TypeDate(), tracker.string.TimeSpendReportDate) - date!: Timestamp | null + date!: Timestamp | null @Prop(TypeNumber(), tracker.string.TimeSpendReportValue) - value!: number + value!: number @Prop(TypeString(), tracker.string.TimeSpendReportDescription) - description!: string + description!: string } /** @@ -390,13 +390,13 @@ export class TIssueRelation extends TAttachedDoc implements IssueRelation { @Prop(TypeRef(tracker.class.Issue), tracker.string.Issue) @Index(IndexKind.Indexed) - target!: Ref + target!: Ref @Prop(TypeString(), tracker.string.GanttDependency) - kind!: DependencyKind + kind!: DependencyKind @Prop(TypeNumber(), tracker.string.GanttLag) - lag!: number + lag!: number } /** * @public @@ -407,22 +407,22 @@ export class TIssueRelation extends TAttachedDoc implements IssueRelation { export class TComponent extends TDoc implements Component { @Prop(TypeString(), tracker.string.Title) @Index(IndexKind.FullText) - label!: string + label!: string @Prop(TypeMarkup(), tracker.string.Description) - description?: Markup + description?: Markup @Prop(TypeRef(contact.mixin.Employee), tracker.string.ComponentLead) - lead!: Ref | null + lead!: Ref | null @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments!: number + comments!: number @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeNumber(), tracker.string.Color) - color?: number + color?: number declare space: Ref } @@ -435,29 +435,29 @@ export class TComponent extends TDoc implements Component { export class TMilestone extends TDoc implements Milestone { @Prop(TypeString(), tracker.string.Title) // @Index(IndexKind.FullText) - label!: string + label!: string @Prop(TypeMarkup(), tracker.string.Description) - description?: Markup + description?: Markup @Prop(TypeMilestoneStatus(), tracker.string.Status) @Index(IndexKind.Indexed) - status!: MilestoneStatus + status!: MilestoneStatus @Prop(Collection(chunter.class.ChatMessage), chunter.string.Comments) - comments!: number + comments!: number @Prop(Collection(attachment.class.Attachment), attachment.string.Attachments, { shortLabel: attachment.string.Files }) - attachments?: number + attachments?: number @Prop(TypeDate(), tracker.string.StartDate) - startDate!: Timestamp | null + startDate!: Timestamp | null @Prop(TypeDate(), tracker.string.TargetDate) - targetDate!: Timestamp + targetDate!: Timestamp @Prop(TypeNumber(), tracker.string.Color) - color?: number + color?: number declare space: Ref } @@ -480,10 +480,10 @@ export class TProjectTargetPreference extends TPreference implements ProjectTarg declare attachedTo: Ref @Prop(TypeDate(), tracker.string.LastUpdated) - usedOn!: Timestamp + usedOn!: Timestamp @Prop(TypeRecord(), getEmbeddedLabel('Properties')) - props?: { key: string, value: any }[] + props?: { key: string, value: any }[] } @Mixin(tracker.mixin.ClassicProjectTypeData, tracker.class.Project) @@ -510,20 +510,20 @@ export class TIssueTypeData extends TIssue {} @Model(tracker.class.DependencyShiftedNotification, notification.class.CommonInboxNotification) export class TDependencyShiftedNotification extends TCommonInboxNotification implements DependencyShiftedNotification { @Prop(TypeRef(tracker.class.Issue), tracker.string.Issue) - triggerIssueId!: Ref + triggerIssueId!: Ref @Prop(TypeString(), tracker.string.Issue) - triggerIssueIdentifier!: string + triggerIssueIdentifier!: string @Prop(TypeString(), tracker.string.Issue) - triggerIssueTitle!: string + triggerIssueTitle!: string triggerUserId!: AccountUuid shiftedIssues!: ShiftedIssuePayload[] @Prop(TypeString(), tracker.string.DependencyShifted) - cascadeToken!: string + cascadeToken!: string } /** @@ -540,19 +540,19 @@ export class TDependencyShiftedNotification extends TCommonInboxNotification imp @Model(tracker.class.DependencyShiftRequest, core.class.Doc, DOMAIN_TRACKER) export class TDependencyShiftRequest extends TDoc implements DependencyShiftRequest { @Prop(TypeRef(tracker.class.Issue), tracker.string.Issue) - triggerIssueId!: Ref + triggerIssueId!: Ref @Prop(TypeString(), tracker.string.Issue) - triggerIssueIdentifier!: string + triggerIssueIdentifier!: string @Prop(TypeString(), tracker.string.Issue) - triggerIssueTitle!: string + triggerIssueTitle!: string @Prop(TypeRef(tracker.class.Project), tracker.string.Project) - triggerIssueSpace!: Ref + triggerIssueSpace!: Ref shiftedIssues!: ShiftedIssuePayload[] @Prop(TypeString(), tracker.string.DependencyShifted) - cascadeToken!: string + cascadeToken!: string } diff --git a/models/training/.eslintrc.js b/models/training/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/models/training/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/training/eslint.config.mjs b/models/training/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/models/training/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/models/training/package.json b/models/training/package.json index dd0ae31ecf..7f9b40f4d5 100644 --- a/models/training/package.json +++ b/models/training/package.json @@ -21,18 +21,18 @@ "_phase:validate": "compile validate" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", diff --git a/models/training/src/types.ts b/models/training/src/types.ts index b06f61bc4d..6bc50cf55e 100644 --- a/models/training/src/types.ts +++ b/models/training/src/types.ts @@ -89,55 +89,55 @@ export class TTraining extends TDoc implements Training { @Prop(TypeString(), training.string.TrainingTitle) @Index(IndexKind.FullText) - title!: string + title!: string @Prop(TypeString(), core.string.Id) @Index(IndexKind.FullText) - code!: string + code!: string @Prop(TypeNumber(), training.string.Revision) @Index(IndexKind.Indexed) - revision!: number + revision!: number @Prop(TypeRef(contact.mixin.Employee), training.string.TrainingAuthor, { editor: training.component.EmployeeEditor }) - author!: Ref + author!: Ref @Prop(TypeRef(contact.mixin.Employee), training.string.Owner, { editor: training.component.EmployeeEditor }) - owner!: Ref + owner!: Ref @Prop(TypeTrainingState(), training.string.State) - state!: TrainingState + state!: TrainingState @Prop(TypeMarkup(), core.string.Description, { defaultValue: 0 }) @Index(IndexKind.Indexed) - description: Markup = '' + description: Markup = '' @Prop(Collection(attachments.class.Attachment), attachments.string.Attachments, { defaultValue: 0 }) - attachments: CollectionSize = 0 + attachments: CollectionSize = 0 @Prop(TypePercentage(), training.string.TrainingPassingScore, { defaultValue: 100 }) @Index(IndexKind.Indexed) - passingScore: Percentage = 100 + passingScore: Percentage = 100 @Prop(TypeTimestamp(), training.string.TrainingReleasedOn, { defaultValue: null }) @Index(IndexKind.Indexed) - releasedOn: Timestamp | null = null + releasedOn: Timestamp | null = null @Prop(TypeRef(contact.mixin.Employee), training.string.TrainingReleasedBy, { defaultValue: null, editor: training.component.EmployeeEditor }) - releasedBy: Ref | null = null + releasedBy: Ref | null = null @Prop(Collection(questions.class.Question), training.string.TrainingQuestions, { defaultValue: 0 }) - questions: CollectionSize> = 0 + questions: CollectionSize> = 0 @Prop(Collection(training.class.TrainingRequest), training.string.TrainingRequests, { defaultValue: 0 }) - requests: CollectionSize = 0 + requests: CollectionSize = 0 } @Model(training.class.TrainingRequest, core.class.AttachedDoc, DOMAIN_TRAINING) @@ -166,37 +166,37 @@ export class TTrainingRequest extends TAttachedDoc implements TrainingRequest { editor: training.component.EmployeeEditor }) @Index(IndexKind.Indexed) - owner!: Ref + owner!: Ref @Prop(ArrOf(TypeRef(contact.mixin.Employee)), training.string.TrainingRequestTrainees, { editor: training.component.TrainingRequestTraineesEditor }) - trainees: Ref[] = [] + trainees: Ref[] = [] @Prop(TypeTimestamp(), training.string.TrainingRequestDueDate, { defaultValue: null, editor: training.component.TrainingRequestDueDateEditor }) @Index(IndexKind.Indexed) - dueDate: Timestamp | null = null + dueDate: Timestamp | null = null @Prop(TypeNumber(), training.string.TrainingRequestMaxAttempts, { defaultValue: null, editor: training.component.TrainingRequestMaxAttemptsEditor }) - maxAttempts: number | null = null + maxAttempts: number | null = null @Prop(Collection(training.class.TrainingAttempt), training.string.TrainingAttempts, { defaultValue: 0 }) - attempts: CollectionSize = 0 + attempts: CollectionSize = 0 @Prop(TypeTimestamp(), training.string.TrainingRequestCanceledDate, { defaultValue: null }) - canceledOn: Timestamp | null = null + canceledOn: Timestamp | null = null @Prop(TypeRef(contact.mixin.Employee), training.string.TrainingRequestCanceledBy, { defaultValue: null, editor: training.component.EmployeeEditor }) - canceledBy: Ref | null = null + canceledBy: Ref | null = null } @Model(training.class.TrainingAttempt, core.class.AttachedDoc, DOMAIN_TRAINING) @@ -225,38 +225,38 @@ export class TTrainingAttempt extends TAttachedDoc implements TrainingAttempt { editor: training.component.EmployeeEditor }) @Index(IndexKind.Indexed) - owner!: Ref + owner!: Ref @Prop(TypeNumber(), training.string.TrainingAttempt, { defaultValue: 1 }) @Index(IndexKind.Indexed) - seqNumber: number = 1 + seqNumber: number = 1 @Prop(TypeTrainingAttemptState(), training.string.State) @Index(IndexKind.Indexed) - state: TrainingAttemptState = TrainingAttemptState.Draft + state: TrainingAttemptState = TrainingAttemptState.Draft @Prop(Collection(questions.class.Answer), questions.string.Answers, { defaultValue: 0 }) - answers: CollectionSize> = 0 + answers: CollectionSize> = 0 @Prop(TypeTimestamp(), training.string.TrainingAttemptSubmittedDate, { defaultValue: null }) @Index(IndexKind.Indexed) - submittedOn: Timestamp | null = null + submittedOn: Timestamp | null = null @Prop(TypeRef(contact.mixin.Employee), training.string.TrainingAttemptSubmittedBy, { defaultValue: null, editor: training.component.EmployeeEditor }) - submittedBy: Ref | null = null + submittedBy: Ref | null = null @Prop(TypePercentage(), questions.string.Score, { defaultValue: null }) @Index(IndexKind.Indexed) - score: Percentage | null = null + score: Percentage | null = null @Prop(TypeNumber(), training.string.TrainingAttemptAssessmentsTotal, { defaultValue: null }) - assessmentsTotal: number | null = null + assessmentsTotal: number | null = null @Prop(TypeNumber(), training.string.TrainingAttemptAssessmentsPassed, { defaultValue: null }) - assessmentsPassed: number | null = null + assessmentsPassed: number | null = null } @Mixin(training.mixin.TrainingsTypeData, core.class.TypedSpace) diff --git a/models/uploader/.eslintrc.js b/models/uploader/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/uploader/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/uploader/eslint.config.mjs b/models/uploader/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/uploader/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/uploader/package.json b/models/uploader/package.json index 0650ebb563..e7895b0a63 100644 --- a/models/uploader/package.json +++ b/models/uploader/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/view/.eslintrc.js b/models/view/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/view/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/view/eslint.config.mjs b/models/view/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/view/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/view/package.json b/models/view/package.json index 5f54c26789..eed4475553 100644 --- a/models/view/package.json +++ b/models/view/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/models/workbench/.eslintrc.js b/models/workbench/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/models/workbench/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/models/workbench/eslint.config.mjs b/models/workbench/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/models/workbench/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/models/workbench/package.json b/models/workbench/package.json index 8949b67911..87501377dc 100644 --- a/models/workbench/package.json +++ b/models/workbench/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/packages/analytics-providers/.eslintrc.js b/packages/analytics-providers/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/packages/analytics-providers/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/packages/analytics-providers/eslint.config.mjs b/packages/analytics-providers/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/analytics-providers/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/analytics-providers/package.json b/packages/analytics-providers/package.json index 1bc1d5f76b..f93d6d591b 100644 --- a/packages/analytics-providers/package.json +++ b/packages/analytics-providers/package.json @@ -25,19 +25,19 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/packages/analytics-providers/src/configure.ts b/packages/analytics-providers/src/configure.ts index 0603c268dc..83c89dc5be 100644 --- a/packages/analytics-providers/src/configure.ts +++ b/packages/analytics-providers/src/configure.ts @@ -19,7 +19,7 @@ import { type AnalyticsConfig } from './types' export * from './analyticsCollector' export * from './utils' -export * from './types' +export type * from './types' export function configureAnalyticsProviders (config: AnalyticsConfig): void { const providers: AnalyticProvider[] = [new AnalyticsCollectorProvider()] diff --git a/packages/analytics-providers/src/index.ts b/packages/analytics-providers/src/index.ts index 913a4af25f..544c8ff44d 100644 --- a/packages/analytics-providers/src/index.ts +++ b/packages/analytics-providers/src/index.ts @@ -15,5 +15,5 @@ export * from './analyticsCollector' export * from './utils' -export * from './types' +export type * from './types' export * from './configure' diff --git a/packages/billing-client/.eslintrc.js b/packages/billing-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/packages/billing-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/packages/billing-client/eslint.config.mjs b/packages/billing-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/billing-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/billing-client/package.json b/packages/billing-client/package.json index 2b68472b24..a2751af01b 100644 --- a/packages/billing-client/package.json +++ b/packages/billing-client/package.json @@ -25,19 +25,19 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/packages/billing-client/src/index.ts b/packages/billing-client/src/index.ts index edfed4a6d6..39aecc8965 100644 --- a/packages/billing-client/src/index.ts +++ b/packages/billing-client/src/index.ts @@ -1,2 +1,2 @@ export * from './client' -export * from './types' +export type * from './types' diff --git a/packages/doc-convert/eslint.config.mjs b/packages/doc-convert/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/doc-convert/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/gantt/eslint.config.mjs b/packages/gantt/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/gantt/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/gantt/package.json b/packages/gantt/package.json index a2aad0c328..63b5cf65c4 100644 --- a/packages/gantt/package.json +++ b/packages/gantt/package.json @@ -25,19 +25,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "typescript": "^5.9.3", - "eslint-plugin-svelte": "^2.35.1" + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": {}, "repository": { diff --git a/packages/gantt/src/__tests__/sidebar-columns.test.ts b/packages/gantt/src/__tests__/sidebar-columns.test.ts index e4af36e340..1479bdb5f9 100644 --- a/packages/gantt/src/__tests__/sidebar-columns.test.ts +++ b/packages/gantt/src/__tests__/sidebar-columns.test.ts @@ -91,7 +91,7 @@ describe('sidebar-columns: constants', () => { it('DEFAULT_COLUMNS is a subset of ALL_COLUMN_KEYS', () => { for (const k of DEFAULT_COLUMNS) { - expect(ALL_COLUMN_KEYS).toContain(k as SidebarColumnKey) + expect(ALL_COLUMN_KEYS).toContain(k) } }) diff --git a/packages/gantt/src/drag-controller.ts b/packages/gantt/src/drag-controller.ts index 9f76c0d0ef..d39c9a47d9 100644 --- a/packages/gantt/src/drag-controller.ts +++ b/packages/gantt/src/drag-controller.ts @@ -27,10 +27,7 @@ export function reduce + return reduceImpl(state, event, timeScale) as unknown as DragState } function reduceImpl (state: DragState, event: DragEvent, timeScale: TimeScale): DragState { diff --git a/packages/gantt/src/index.ts b/packages/gantt/src/index.ts index 0ad795e211..4c048ef46b 100644 --- a/packages/gantt/src/index.ts +++ b/packages/gantt/src/index.ts @@ -6,7 +6,7 @@ // Domain-neutral Gantt engine: scheduling, zoom, drag/pointer, time-scale and // viewport primitives with no dependency on any platform package. -export * from './types' +export type * from './types' export * from './breakpoint' export * from './cascade-popup-layout' export * from './cascade-token' diff --git a/packages/gantt/src/pinch-zoom.ts b/packages/gantt/src/pinch-zoom.ts index cd16518277..e47d586e11 100644 --- a/packages/gantt/src/pinch-zoom.ts +++ b/packages/gantt/src/pinch-zoom.ts @@ -30,16 +30,16 @@ export type PinchState = | { kind: 'idle' } | { kind: 'single', id: number, x: number, y: number } | { - kind: 'pinch' - idA: number - idB: number - a: Point - b: Point - center: Point - initialDistance: number - currentDistance: number - initialPxPerDay: number - } + kind: 'pinch' + idA: number + idB: number + a: Point + b: Point + center: Point + initialDistance: number + currentDistance: number + initialPxPerDay: number + } export type PinchEvent = | { type: 'down', id: number, x: number, y: number, pxPerDay: number } diff --git a/packages/gantt/src/types.ts b/packages/gantt/src/types.ts index fc2dff173b..a564d1f0e9 100644 --- a/packages/gantt/src/types.ts +++ b/packages/gantt/src/types.ts @@ -115,73 +115,73 @@ export type DragState - minDeltaMs: number - maxDeltaMs: number - anchorDeltaMs: number + kind: 'dragging-body' + target: TTarget + originStart: number + originEnd: number + cursorStartX: number + previewStart: number + previewEnd: number + /** Bulk co-drag state: other selected issues being shifted in sync. */ + coDrag?: { + members: Array<{ issueId: string, originStart: number, originEnd: number }> + minDeltaMs: number + maxDeltaMs: number + anchorDeltaMs: number + } } - } | { - kind: 'resizing-left' - target: TTarget - originStart: number - originEnd: number - cursorStartX: number - previewStart: number - } + kind: 'resizing-left' + target: TTarget + originStart: number + originEnd: number + cursorStartX: number + previewStart: number + } | { - kind: 'resizing-right' - target: TTarget - originStart: number - originEnd: number - cursorStartX: number - previewEnd: number - } + kind: 'resizing-right' + target: TTarget + originStart: number + originEnd: number + cursorStartX: number + previewEnd: number + } | { - kind: 'dragging-unscheduled' - target: TTarget - /** Anchor date the drag was started from (defaults to today at UTC midnight). */ - originStart: number - /** originStart + 1 day; used for ghost-outline / commit symmetry with dragging-body. */ - originEnd: number - cursorStartX: number - previewStart: number - previewEnd: number - /** + kind: 'dragging-unscheduled' + target: TTarget + /** Anchor date the drag was started from (defaults to today at UTC midnight). */ + originStart: number + /** originStart + 1 day; used for ghost-outline / commit symmetry with dragging-body. */ + originEnd: number + cursorStartX: number + previewStart: number + previewEnd: number + /** * True once the cursor has been over the canvas during the drag and a real * canvas-X has been observed. Guards against the click-without-drag case * where mouseup fires before the user has moved over the canvas — committing * such a "drag" would schedule the issue to today silently. `commitDrag` * treats `dragging-unscheduled && !hasCanvasTarget` as a no-op. */ - hasCanvasTarget: boolean - } + hasCanvasTarget: boolean + } | { - kind: 'connector-drawing' - /** Source item the user is drawing the dependency from. */ - source: TNode - /** Pixel x/y of the connector-dot on the source bar (where the curve starts). */ - originPx: { x: number, y: number } - /** Live cursor x/y in canvas-content coordinates (where the curve ends). */ - cursorPx: { x: number, y: number } - } + kind: 'connector-drawing' + /** Source item the user is drawing the dependency from. */ + source: TNode + /** Pixel x/y of the connector-dot on the source bar (where the curve starts). */ + originPx: { x: number, y: number } + /** Live cursor x/y in canvas-content coordinates (where the curve ends). */ + cursorPx: { x: number, y: number } + } | { - kind: 'connector-target-hover' - source: TNode - originPx: { x: number, y: number } - cursorPx: { x: number, y: number } - /** Candidate target item under the pointer. */ - target: TNode - } + kind: 'connector-target-hover' + source: TNode + originPx: { x: number, y: number } + cursorPx: { x: number, y: number } + /** Candidate target item under the pointer. */ + target: TNode + } /** * Input events fed into the drag-controller reducer. @@ -205,37 +205,37 @@ export type DragEvent - minDeltaMs: number - maxDeltaMs: number + originStart: number + originEnd: number + edge: 'left' | 'right' | 'body' + cursorX: number + /** Bulk co-drag state: other selected issues to shift in sync. */ + coDrag?: { + members: Array<{ issueId: string, originStart: number, originEnd: number }> + minDeltaMs: number + maxDeltaMs: number + } } - } | { type: 'mousedown-unscheduled', target: TTarget, cursorX: number } | { type: 'mousemove', cursorX: number, canvasX?: number } | { type: 'mouseup' } | { type: 'cancel' } | { - type: 'mousedown-connector' - source: TNode - originPx: { x: number, y: number } - cursorPx: { x: number, y: number } - } + type: 'mousedown-connector' + source: TNode + originPx: { x: number, y: number } + cursorPx: { x: number, y: number } + } | { - type: 'mousemove-connector' - cursorPx: { x: number, y: number } - /** Bar under the cursor right now, or null when over empty canvas. */ - hoveredBar: TNode | null - } + type: 'mousemove-connector' + cursorPx: { x: number, y: number } + /** Bar under the cursor right now, or null when over empty canvas. */ + hoveredBar: TNode | null + } | { type: 'mouseup-connector' } diff --git a/packages/highlight/.eslintrc.js b/packages/highlight/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/packages/highlight/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/packages/highlight/eslint.config.mjs b/packages/highlight/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/packages/highlight/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/packages/highlight/package.json b/packages/highlight/package.json index 86b0c8e478..ec502a3683 100644 --- a/packages/highlight/package.json +++ b/packages/highlight/package.json @@ -18,24 +18,23 @@ "devDependencies": { "svelte-loader": "^3.2.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/packages/hls/.eslintrc.js b/packages/hls/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/packages/hls/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/packages/hls/eslint.config.mjs b/packages/hls/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/packages/hls/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/packages/hls/package.json b/packages/hls/package.json index d3007bb8c6..519d819b91 100644 --- a/packages/hls/package.json +++ b/packages/hls/package.json @@ -17,26 +17,24 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/dompurify": "^3.0.5", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/packages/hls/src/components/HlsVideo.svelte b/packages/hls/src/components/HlsVideo.svelte index 8f4126c42b..97d9b21053 100644 --- a/packages/hls/src/components/HlsVideo.svelte +++ b/packages/hls/src/components/HlsVideo.svelte @@ -36,12 +36,12 @@ const token = getMetadata(presentation.metadata.Token) ?? '' class loader extends HLS.DefaultConfig.loader { - constructor (config: HlsConfig) { + constructor(config: HlsConfig) { super(config) this.load = this.load.bind(this) } - load (context: LoaderContext, config: LoaderConfiguration, callbacks: LoaderCallbacks): void { + load(context: LoaderContext, config: LoaderConfiguration, callbacks: LoaderCallbacks): void { const url = new URL(context.url) const pathname = url.pathname.endsWith('/') ? url.pathname.slice(0, -1) : url.pathname const blobId = pathname.split('/').pop() @@ -63,7 +63,7 @@ controls: ['play-large', 'play', 'progress', 'current-time', 'mute', 'volume', 'settings', 'fullscreen'] } - function initialize (src: string): void { + function initialize(src: string): void { if (video === null) { return } @@ -152,7 +152,7 @@ player?.destroy() }) - function updateQuality (newQuality: number): void { + function updateQuality(newQuality: number): void { if (hls === null) { return } diff --git a/packages/importer/.eslintrc.js b/packages/importer/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/packages/importer/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/packages/importer/eslint.config.mjs b/packages/importer/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/packages/importer/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/packages/importer/package.json b/packages/importer/package.json index 26fc85d47a..ff73a93e4c 100644 --- a/packages/importer/package.json +++ b/packages/importer/package.json @@ -18,23 +18,22 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", "@types/mime-types": "~2.1.1", - "@types/js-yaml": "^4.0.9", - "@types/uuid": "^8.3.1" + "@types/js-yaml": "^4.0.9" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", @@ -58,9 +57,9 @@ "commander": "^14.0.0", "mime-types": "~2.1.34", "csvtojson": "^2.0.10", - "js-yaml": "^4.1.0", - "image-size": "^1.2.1", - "uuid": "^8.3.2" + "js-yaml": "^4.3.2", + "image-size": "^2.0.4", + "uuid": "^11.1.1" }, "repository": { "type": "git", diff --git a/packages/importer/src/huly/cards.ts b/packages/importer/src/huly/cards.ts index 26994d1bf7..407a709eea 100644 --- a/packages/importer/src/huly/cards.ts +++ b/packages/importer/src/huly/cards.ts @@ -338,7 +338,7 @@ export class CardsProcessor { return { _class: card.class.MasterTag, props: { - _id: this.metadataRegistry.getRef(filePath) as Ref, + _id: this.metadataRegistry.getRef(filePath), space: core.space.Model, extends: parentMasterTagId ?? card.class.Card, label: ('embedded:embedded:' + title) as IntlString, @@ -407,7 +407,7 @@ export class CardsProcessor { return { _class: card.class.Tag, props: { - _id: this.metadataRegistry.getRef(filePath) as Ref, + _id: this.metadataRegistry.getRef(filePath), space: core.space.Model, extends: parentTagId ?? masterTagId, label: ('embedded:embedded:' + title) as IntlString, @@ -436,7 +436,7 @@ export class CardsProcessor { space: core.space.Model, attributeOf: masterTagId, name: generateId>(), - label: ('embedded:embedded:' + property.label) as IntlString, + label: 'embedded:embedded:' + property.label, isCustom: true, type, defaultValue: property.defaultValue ?? null diff --git a/packages/importer/src/huly/huly.ts b/packages/importer/src/huly/huly.ts index b4ddfd1be6..ab44c22477 100644 --- a/packages/importer/src/huly/huly.ts +++ b/packages/importer/src/huly/huly.ts @@ -34,7 +34,8 @@ import document, { type Document } from '@hcengineering/document' import core from '@hcengineering/model-core' import tracker, { type Issue, type Project } from '@hcengineering/tracker' import * as fs from 'fs' -import sizeOf from 'image-size' +import { readFile } from 'fs/promises' +import { imageSize } from 'image-size' import * as yaml from 'js-yaml' import { contentType } from 'mime-types' import * as path from 'path' @@ -286,7 +287,8 @@ export class HulyFormatImporter { if (fileType !== false && fileType?.startsWith('image/')) { try { - const imageDimensions = sizeOf(attachMeta.path) + const imageData = await readFile(attachMeta.path) + const imageDimensions = imageSize(imageData) attachment.metadata = { originalWidth: imageDimensions.width ?? 0, originalHeight: imageDimensions.height ?? 0 diff --git a/packages/importer/src/importer/builder.ts b/packages/importer/src/importer/builder.ts index d53ec7bf01..52b4642477 100644 --- a/packages/importer/src/importer/builder.ts +++ b/packages/importer/src/importer/builder.ts @@ -313,7 +313,7 @@ export class ImportWorkspaceBuilder { } } - private validateAndAdd( + private validateAndAdd ( type: string, path: string, item: T, diff --git a/packages/importer/src/importer/importer.ts b/packages/importer/src/importer/importer.ts index 3d3562edb0..5a0897b032 100644 --- a/packages/importer/src/importer/importer.ts +++ b/packages/importer/src/importer/importer.ts @@ -1145,7 +1145,7 @@ export class WorkspaceImporter { documents.mixin.DocumentTemplate, undefined, parentProjectDocumentId, - templateId as unknown as Ref, + templateId, template.docPrefix, template.code ?? '', template.title, @@ -1228,7 +1228,7 @@ export class WorkspaceImporter { requests: 0, labels: 0 }, - template.id as unknown as Ref + template.id ) await ops.createMixin(template.id, documents.class.Document, spaceId, documents.mixin.DocumentTemplate, { @@ -1420,7 +1420,7 @@ export class WorkspaceImporter { _id as Ref | undefined ) } else { - await this.client.createDoc(_class, props.space, props as Data>, _id) + await this.client.createDoc(_class, props.space, props, _id) } } @@ -1441,13 +1441,7 @@ export class WorkspaceImporter { for (const mixin of mixins) { const { _class, mixin: mixinClass, props } = mixin const { _id, space, ...data } = props - await this.client.createMixin( - _id ?? generateId>(), - _class, - space, - mixinClass, - data as Data> - ) + await this.client.createMixin(_id ?? generateId>(), _class, space, mixinClass, data) } } diff --git a/packages/importer/src/importer/preprocessor.ts b/packages/importer/src/importer/preprocessor.ts index 7275a7ca9f..475abc3ae0 100644 --- a/packages/importer/src/importer/preprocessor.ts +++ b/packages/importer/src/importer/preprocessor.ts @@ -31,7 +31,7 @@ export abstract class BaseMarkdownPreprocessor implements MarkdownPreprocessor { constructor (protected readonly personsByName: Map>) {} - abstract process (json: MarkupNode, id: Ref, spaceId: Ref): MarkupNode + abstract process(json: MarkupNode, id: Ref, spaceId: Ref): MarkupNode protected processMentions (node: MarkupNode): void { if (node.type !== MarkupNodeType.paragraph || node.content === undefined) return diff --git a/packages/importer/src/index.ts b/packages/importer/src/index.ts index 6c5a32bcd4..6f1abb3a8d 100644 --- a/packages/importer/src/index.ts +++ b/packages/importer/src/index.ts @@ -19,7 +19,7 @@ export * from './notion/notion' export * from './docx/docx' export * from './docx/preprocessors' -export * from './importer/uploader' +export type * from './importer/uploader' export * from './importer/storageUploader' export * from './importer/frontUploader' -export * from './importer/logger' +export type * from './importer/logger' diff --git a/packages/integration-client/.eslintrc.js b/packages/integration-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/packages/integration-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/packages/integration-client/eslint.config.mjs b/packages/integration-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/integration-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/integration-client/package.json b/packages/integration-client/package.json index 5378f9a9dc..8d6d866d5a 100644 --- a/packages/integration-client/package.json +++ b/packages/integration-client/package.json @@ -22,31 +22,30 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0", "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", + "jest": "^30.4.2", "jest-fetch-mock": "^3.0.3", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/uuid": "^8.3.1" + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0" }, "dependencies": { "@hcengineering/account-client": "workspace:^0.7.25", "@hcengineering/core": "workspace:^0.7.26", "@hcengineering/platform": "workspace:^0.7.20", "@hcengineering/kvs-client": "workspace:^0.7.0", - "uuid": "^8.3.2" + "uuid": "^11.1.1" }, "repository": { "type": "git", diff --git a/packages/integration-client/src/client.ts b/packages/integration-client/src/client.ts index 8241e22c69..403e97be6f 100644 --- a/packages/integration-client/src/client.ts +++ b/packages/integration-client/src/client.ts @@ -48,7 +48,7 @@ export class IntegrationClientImpl implements IntegrationClient { ) {} // Event methods - on(event: string, callback: EventCallback): () => void { + on (event: string, callback: EventCallback): () => void { return this.events.on(event, callback) } @@ -56,7 +56,7 @@ export class IntegrationClientImpl implements IntegrationClient { this.events.off(event, callback) } - private emit(event: string, data: T): void { + private emit (event: string, data: T): void { this.events.emit(event, data) } @@ -243,10 +243,10 @@ export class IntegrationClientImpl implements IntegrationClient { workspaceUuid: WorkspaceUuid | null | undefined ): Promise< | { - connectionRemoved: boolean - } + connectionRemoved: boolean + } | undefined - > { + > { if (socialId == null) return try { diff --git a/packages/integration-client/src/events.ts b/packages/integration-client/src/events.ts index e95efe92af..3290199770 100644 --- a/packages/integration-client/src/events.ts +++ b/packages/integration-client/src/events.ts @@ -25,7 +25,7 @@ export interface EventEmitter { export class IntegrationEventEmitter implements EventEmitter { private readonly listeners = new Map>() - on(event: string, callback: EventCallback): () => void { + on (event: string, callback: EventCallback): () => void { if (!this.listeners.has(event)) { this.listeners.set(event, new Set()) } @@ -46,7 +46,7 @@ export class IntegrationEventEmitter implements EventEmitter { } } - emit(event: string, data: T): void { + emit (event: string, data: T): void { const eventListeners = this.listeners.get(event) if (eventListeners === undefined) return diff --git a/packages/integration-client/src/types.ts b/packages/integration-client/src/types.ts index 3afbc3e5a9..405386c615 100644 --- a/packages/integration-client/src/types.ts +++ b/packages/integration-client/src/types.ts @@ -57,10 +57,10 @@ export interface IntegrationClient { socialId: PersonId | undefined | null, workspaceUuid: WorkspaceUuid | null | undefined ) => Promise< - | { - connectionRemoved: boolean - } - | undefined + | { + connectionRemoved: boolean + } + | undefined > /** diff --git a/packages/kanban/.eslintrc.js b/packages/kanban/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/packages/kanban/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/packages/kanban/eslint.config.mjs b/packages/kanban/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/packages/kanban/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/packages/kanban/package.json b/packages/kanban/package.json index 714d6a4c98..f2cfb40f4b 100644 --- a/packages/kanban/package.json +++ b/packages/kanban/package.json @@ -21,21 +21,20 @@ "svelte-preprocess": "^5.1.4", "svelte-check": "^3.6.9", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/ui": "workspace:^0.7.0", diff --git a/packages/kanban/src/components/Kanban.svelte b/packages/kanban/src/components/Kanban.svelte index a787d8327c..80a7945728 100644 --- a/packages/kanban/src/components/Kanban.svelte +++ b/packages/kanban/src/components/Kanban.svelte @@ -60,7 +60,7 @@ const limiter = new RateLimiter(10) - async function move (state: CategoryType): Promise { + async function move(state: CategoryType): Promise { if (dragCard === undefined) { return } @@ -108,7 +108,7 @@ let isDragging = false - async function updateDone (updateValue: DocumentUpdate): Promise { + async function updateDone(updateValue: DocumentUpdate): Promise { isDragging = false if (dragCard === undefined) { return @@ -116,7 +116,7 @@ await client.update(dragCard, updateValue) } - function panelDragOver (event: Event | undefined, state: CategoryType): void { + function panelDragOver(event: Event | undefined, state: CategoryType): void { event?.preventDefault() if (dragCard !== undefined && dragCardState !== state) { const canDrop = !dragCardAvailableCategories || dragCardAvailableCategories.includes(state) @@ -145,7 +145,7 @@ groupByDocs = groupByDocs } } - function panelDragLeave (event: Event | undefined, state: CategoryType): void { + function panelDragLeave(event: Event | undefined, state: CategoryType): void { event?.preventDefault() if (dragCard !== undefined && state !== dragCardInitialState) { // We need to restore original position @@ -166,7 +166,7 @@ } } - function dragswap (ev: MouseEvent, i: number, s: number): boolean { + function dragswap(ev: MouseEvent, i: number, s: number): boolean { if (s === -1) return false if (i < s) { return ev.offsetY < (ev.target as HTMLElement).offsetHeight / 2 @@ -185,7 +185,7 @@ let cardOverPos: DragCardOverPos | undefined - function cardDragOver (evt: CardDragEvent, object: Item, state: CategoryType): void { + function cardDragOver(evt: CardDragEvent, object: Item, state: CategoryType): void { if (dragCard !== undefined && !dontUpdateRank) { const updates = getUpdateProps(dragCard, state) if (updates === undefined) { @@ -230,7 +230,7 @@ } } - async function cardDrop (evt: CardDragEvent, object: Item, state: CategoryType): Promise { + async function cardDrop(evt: CardDragEvent, object: Item, state: CategoryType): Promise { if (!dontUpdateRank && dragCard !== undefined) { const arr = getGroupByValues(groupByDocs, state) ?? [] const s = arr.findIndex((p) => p._id === dragCard?._id) @@ -246,7 +246,7 @@ isDragging = false } - async function onDragStart (object: Item, state: CategoryType): Promise { + async function onDragStart(object: Item, state: CategoryType): Promise { dragCardInitialState = state dragCardState = state dragCardInitialRank = object.rank @@ -260,7 +260,7 @@ // eslint-disable-next-line let dragged: boolean = false - function toAny (object: any): any { + function toAny(object: any): any { return object } @@ -270,12 +270,12 @@ $: stateRefs.length = categories.length $: stateRows.length = categories.length - function scrollInto (statePos: number, obj: Item): void { + function scrollInto(statePos: number, obj: Item): void { stateRefs[statePos]?.scrollIntoView({ behavior: 'auto', block: 'nearest' }) stateRows[statePos]?.scroll(obj) } - function getState (doc: Item): number { + function getState(doc: Item): number { let pos = 0 for (const st of categories) { const stateObjs = getGroupByValues(groupByDocs, st) ?? [] @@ -287,7 +287,7 @@ return -1 } - export function select (offset: 1 | -1 | 0, of?: Doc, dir?: 'vertical' | 'horizontal'): void { + export function select(offset: 1 | -1 | 0, of?: Doc, dir?: 'vertical' | 'horizontal'): void { let pos = (of != null ? objects.findIndex((it) => it._id === of._id) : selection) ?? -1 if (pos === -1) { for (const st of categories) { @@ -367,7 +367,7 @@ $: checkedSet = new Set>(checked.map((it) => it._id)) - export function check (docs: Doc[], value: boolean): void { + export function check(docs: Doc[], value: boolean): void { dispatch('check', { docs, value }) } const showMenu = async (evt: MouseEvent, object: Item): Promise => { diff --git a/packages/kanban/src/components/KanbanRow.svelte b/packages/kanban/src/components/KanbanRow.svelte index c9a78b8cbb..69677357e3 100644 --- a/packages/kanban/src/components/KanbanRow.svelte +++ b/packages/kanban/src/components/KanbanRow.svelte @@ -53,7 +53,7 @@ const dispatch = createEventDispatcher() - function toAny (object: any): any { + function toAny(object: any): any { return object } @@ -62,7 +62,7 @@ const stateRefs: HTMLElement[] = [] $: stateRefs.length = stateObjects.length - export function scroll (item: Item): void { + export function scroll(item: Item): void { const pos = stateObjects.findIndex((it) => it._id === item._id) if (pos >= 0) { stateRefs[pos]?.scrollIntoView({ behavior: 'auto', block: 'nearest' }) @@ -93,7 +93,7 @@ { ...options, limit } ) - function getObject (_id: Ref, limitedObjects: IdMap): DocWithRank | undefined { + function getObject(_id: Ref, limitedObjects: IdMap): DocWithRank | undefined { return limitedObjects.get(_id) ?? (_id === dragCard?._id ? dragCard : undefined) } diff --git a/packages/kanban/src/index.ts b/packages/kanban/src/index.ts index ba1c590266..0fac121808 100644 --- a/packages/kanban/src/index.ts +++ b/packages/kanban/src/index.ts @@ -14,6 +14,6 @@ // import '@hcengineering/platform-rig/profiles/ui/svelte' -export * from './types' +export type * from './types' export { default as Kanban } from './components/Kanban.svelte' diff --git a/packages/kvs-client/.eslintrc.js b/packages/kvs-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/packages/kvs-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/packages/kvs-client/eslint.config.mjs b/packages/kvs-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/kvs-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/kvs-client/package.json b/packages/kvs-client/package.json index 530ad4f03b..ff48f01369 100644 --- a/packages/kvs-client/package.json +++ b/packages/kvs-client/package.json @@ -25,20 +25,20 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", + "jest": "^30.4.2", "jest-fetch-mock": "^3.0.3", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/packages/kvs-client/src/client.ts b/packages/kvs-client/src/client.ts index f209ab689b..71c4c8ac28 100644 --- a/packages/kvs-client/src/client.ts +++ b/packages/kvs-client/src/client.ts @@ -65,7 +65,7 @@ class KeyValueClientImpl implements KeyValueClient { } } - async setValue(key: string, value: T): Promise { + async setValue (key: string, value: T): Promise { const url = this.buildUrl(key) await this.sendRequest(url, { method: 'POST', @@ -75,7 +75,7 @@ class KeyValueClientImpl implements KeyValueClient { }) } - async getValue(key: string): Promise { + async getValue (key: string): Promise { const url = this.buildUrl(key) return await this.sendRequest(url, { method: 'GET', @@ -108,7 +108,7 @@ class KeyValueClientImpl implements KeyValueClient { return key !== undefined ? concatLink(baseApiUrl, encodeURIComponent(key)) : baseApiUrl } - private async sendRequest( + private async sendRequest ( url: string, options: { method: string diff --git a/packages/kvs-client/src/index.ts b/packages/kvs-client/src/index.ts index 0f078ded71..0ce0730482 100644 --- a/packages/kvs-client/src/index.ts +++ b/packages/kvs-client/src/index.ts @@ -14,4 +14,4 @@ // export * from './client' -export * from './types' +export type * from './types' diff --git a/packages/panel/.eslintrc.js b/packages/panel/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/packages/panel/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/packages/panel/eslint.config.mjs b/packages/panel/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/packages/panel/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/packages/panel/package.json b/packages/panel/package.json index 8990e3d2f8..fe6d1fb606 100644 --- a/packages/panel/package.json +++ b/packages/panel/package.json @@ -21,21 +21,20 @@ "svelte-preprocess": "^5.1.4", "svelte-check": "^3.6.9", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/ui": "workspace:^0.7.0", diff --git a/packages/panel/src/components/Panel.svelte b/packages/panel/src/components/Panel.svelte index ad6f12c5a3..9f2d441062 100644 --- a/packages/panel/src/components/Panel.svelte +++ b/packages/panel/src/components/Panel.svelte @@ -70,10 +70,10 @@ $: showActivity = !withoutActivity && !isGuest - export function getAside (): string | boolean { + export function getAside(): string | boolean { return panel.getAside() } - export function setAside (id: string | boolean): void { + export function setAside(id: string | boolean): void { panel.setAside(id) } diff --git a/packages/payment-client/.eslintrc.js b/packages/payment-client/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/packages/payment-client/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/packages/payment-client/eslint.config.mjs b/packages/payment-client/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/payment-client/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/payment-client/package.json b/packages/payment-client/package.json index 28a22ff9cd..f51b0c159b 100644 --- a/packages/payment-client/package.json +++ b/packages/payment-client/package.json @@ -25,19 +25,19 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/packages/presentation/.eslintrc.js b/packages/presentation/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/packages/presentation/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/packages/presentation/eslint.config.mjs b/packages/presentation/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/packages/presentation/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/packages/presentation/package.json b/packages/presentation/package.json index c0c70f8c84..d1ddb5a028 100644 --- a/packages/presentation/package.json +++ b/packages/presentation/package.json @@ -16,31 +16,29 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@testing-library/jest-dom": "^6.6.3", - "jest-environment-jsdom": "^30.2.0", - "svelte-eslint-parser": "^0.33.1", - "@types/png-chunks-extract": "^1.0.2", - "@types/uuid": "^8.3.1" + "@testing-library/jest-dom": "6.9.1", + "jest-environment-jsdom": "^30.4.1", + "svelte-eslint-parser": "^1.8.1", + "@types/png-chunks-extract": "^1.0.2" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", @@ -68,7 +66,7 @@ "fast-equals": "^5.2.2", "png-chunks-extract": "^1.0.0", "svelte": "^4.2.20", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "yjs": "^13.6.27" }, "repository": { diff --git a/packages/presentation/src/___tests___/link-preview.test.ts b/packages/presentation/src/___tests___/link-preview.test.ts index 6db691fb03..241a90703d 100644 --- a/packages/presentation/src/___tests___/link-preview.test.ts +++ b/packages/presentation/src/___tests___/link-preview.test.ts @@ -19,9 +19,9 @@ import plugin from '../plugin' const fechFunc = (responseFunc: (input: RequestInfo | URL, init?: RequestInit) => Response) => - async (input: RequestInfo | URL, init?: RequestInit): Promise => { - return responseFunc(input, init) - } + async (input: RequestInfo | URL, init?: RequestInit): Promise => { + return responseFunc(input, init) + } describe('canDisplayLinkPreview', () => { it('should return false if hostname & title are undefined', () => { diff --git a/packages/presentation/src/___tests___/workspaceIdentity.test.ts b/packages/presentation/src/___tests___/workspaceIdentity.test.ts index be20c4f68c..695c3ec6a7 100644 --- a/packages/presentation/src/___tests___/workspaceIdentity.test.ts +++ b/packages/presentation/src/___tests___/workspaceIdentity.test.ts @@ -5,9 +5,9 @@ import { mixLogoColor, normalizeIdentityColor, renderWorkspaceIdentity } from '. // The UI tsconfig profile does not include Node typings, so the few Node APIs this test needs are declared locally. // eslint-disable-next-line @typescript-eslint/naming-convention -- Node.js defines this global name. declare const __dirname: string -declare function require (id: 'fs'): { readFileSync: (path: string, encoding: 'utf8') => string } -declare function require (id: 'path'): { resolve: (...segments: string[]) => string } -declare function require (id: 'vm'): { runInNewContext: (code: string, context: Record) => unknown } +declare function require(id: 'fs'): { readFileSync: (path: string, encoding: 'utf8') => string } +declare function require(id: 'path'): { resolve: (...segments: string[]) => string } +declare function require(id: 'vm'): { runInNewContext: (code: string, context: Record) => unknown } const { readFileSync } = require('fs') const { resolve } = require('path') diff --git a/packages/presentation/src/__mocks__/svelte-store.ts b/packages/presentation/src/__mocks__/svelte-store.ts index e00680b945..ac190d5567 100644 --- a/packages/presentation/src/__mocks__/svelte-store.ts +++ b/packages/presentation/src/__mocks__/svelte-store.ts @@ -36,7 +36,7 @@ export interface Derived extends Readable { _getValue?: () => T } -export const writable = (initialValue: T): Writable => { +export const writable = (initialValue: T): Writable => { let value = initialValue const subscribers = new Set>() @@ -65,7 +65,7 @@ export const writable = (initialValue: T): Writable => { return store } -export const derived = ( +export const derived = ( stores: Readable | Array>, fn: (values: any) => T, initialValue?: T @@ -98,7 +98,7 @@ export const derived = ( return store } -export const readable = (initialValue: T, startStopNotifier?: StartStopNotifier): Readable => { +export const readable = (initialValue: T, startStopNotifier?: StartStopNotifier): Readable => { const store: Readable = { subscribe: (callback: Subscriber) => { callback(initialValue) @@ -123,7 +123,7 @@ export const readable = (initialValue: T, startStopNotifier?: StartStopNotifi return store } -export const get = (store: Readable): T => { +export const get = (store: Readable): T => { if (store?._getValue != null) { return store._getValue() } diff --git a/packages/presentation/src/__mocks__/svelte.ts b/packages/presentation/src/__mocks__/svelte.ts index 836e28d3d6..94ccfd9110 100644 --- a/packages/presentation/src/__mocks__/svelte.ts +++ b/packages/presentation/src/__mocks__/svelte.ts @@ -36,8 +36,8 @@ export const tick = async (): Promise => { await Promise.resolve() } -export const createEventDispatcher = = any>(): EventDispatcher => { - return (eventType: K, detail?: T[K]): boolean => { +export const createEventDispatcher = = any> (): EventDispatcher => { + return (eventType: K, detail?: T[K]): boolean => { return true } } diff --git a/packages/presentation/src/communication.ts b/packages/presentation/src/communication.ts index fd77c54a85..ed3893f413 100644 --- a/packages/presentation/src/communication.ts +++ b/packages/presentation/src/communication.ts @@ -125,8 +125,8 @@ export async function setCommunicationClient (platformClient: PlatformClient): P } export type AttachmentDataWithOptionalId

= Omit< -AttachmentData

, -'id' + AttachmentData

, + 'id' > & { id?: AttachmentID } @@ -236,7 +236,7 @@ class Client { await this.sendEvent(event) } - async attachmentPatch

( + async attachmentPatch

( cardId: CardID, messageId: MessageID, ops: { @@ -247,7 +247,7 @@ class Client { } ): Promise { const operations: Array< - AddAttachmentsOperation | RemoveAttachmentsOperation | SetAttachmentsOperation | UpdateAttachmentsOperation + AddAttachmentsOperation | RemoveAttachmentsOperation | SetAttachmentsOperation | UpdateAttachmentsOperation > = [] if (ops.add != null && ops.add.length > 0) { @@ -444,8 +444,8 @@ class Client { const eventPromise: Promise = this.connection .domainRequest(COMMUNICATION, { - event: ev - }) + event: ev + }) .then((result) => result.value) this.onRequest(ev, eventPromise) return await eventPromise diff --git a/packages/presentation/src/components/AttributeBarEditor.svelte b/packages/presentation/src/components/AttributeBarEditor.svelte index ebf6621b9d..70d3aa2ab8 100644 --- a/packages/presentation/src/components/AttributeBarEditor.svelte +++ b/packages/presentation/src/components/AttributeBarEditor.svelte @@ -44,7 +44,7 @@ const dispatch = createEventDispatcher() let editor: AnySvelteComponent | undefined - function onChange (value: any): void { + function onChange(value: any): void { const doc = object as Doc dispatch('update', { key, value }) @@ -58,7 +58,7 @@ } } - function getEditor (_class: Ref>, key: KeyedAttribute | string): void { + function getEditor(_class: Ref>, key: KeyedAttribute | string): void { void getAttributeEditor(client, _class, key).then((p) => { editor = p }) diff --git a/packages/presentation/src/components/AttributeEditor.svelte b/packages/presentation/src/components/AttributeEditor.svelte index cc6de82b38..6cc40db5a1 100644 --- a/packages/presentation/src/components/AttributeEditor.svelte +++ b/packages/presentation/src/components/AttributeEditor.svelte @@ -50,7 +50,7 @@ $: isReadonly = (attribute.readonly ?? false) || !editable - function onChange (value: any): void { + function onChange(value: any): void { if (isReadonly) return const doc = object as Doc void updateAttribute(client, doc, _class, { key: attributeKey, attr: attribute }, value) diff --git a/packages/presentation/src/components/Card.svelte b/packages/presentation/src/components/Card.svelte index 8d3521eb7a..f10e364d87 100644 --- a/packages/presentation/src/components/Card.svelte +++ b/packages/presentation/src/components/Card.svelte @@ -58,7 +58,7 @@ let okProcessing = false $: headerDivide = hideContent && numberOfBlocks > 1 - function handleKeyDown (event: KeyboardEvent) { + function handleKeyDown(event: KeyboardEvent) { const target = event.target as HTMLInputElement if (target) { @@ -75,7 +75,7 @@ } } - function handleOkClick (): void { + function handleOkClick(): void { if (canSave) { if (okProcessing) { return diff --git a/packages/presentation/src/components/DocPopup.svelte b/packages/presentation/src/components/DocPopup.svelte index fa09225a2e..fb12ff9ba8 100644 --- a/packages/presentation/src/components/DocPopup.svelte +++ b/packages/presentation/src/components/DocPopup.svelte @@ -105,7 +105,7 @@ let selection = 0 let list: ListView - function handleSelection (evt: Event | undefined, objects: Doc[], selection: number): void { + function handleSelection(evt: Event | undefined, objects: Doc[], selection: number): void { const item = objects[selection] if (item === undefined) { return @@ -114,7 +114,7 @@ select(item) } - function select (item: Doc): void { + function select(item: Doc): void { onSelect?.(item) if (!multiSelect) { if (allowDeselect) { @@ -128,7 +128,7 @@ } } - function onKeydown (key: KeyboardEvent): void { + function onKeydown(key: KeyboardEvent): void { if (key.code === 'ArrowUp') { key.stopPropagation() key.preventDefault() @@ -147,7 +147,7 @@ } const manager = createFocusManager() - async function onCreate (): Promise { + async function onCreate(): Promise { if (create === undefined) { return } @@ -172,13 +172,13 @@ } } } - function toAny (obj: any): any { + function toAny(obj: any): any { return obj } const forbiddenDeselectItemIds = new Set(disallowDeselect) - function getGroup (doc: Doc, groupBy: any): any { + function getGroup(doc: Doc, groupBy: any): any { if (created.find((it) => it._id === doc._id) !== undefined) { return '_created' } @@ -188,7 +188,7 @@ return getObjectValue(groupBy, toAny(doc)) } - function findObjectPresenter (_class: Ref>): void { + function findObjectPresenter(_class: Ref>): void { const presenterMixin = getClient().getHierarchy().classHierarchyMixin(_class, view.mixin.ObjectPresenter) if (presenterMixin?.presenter !== undefined) { getResource(presenterMixin.presenter) @@ -201,7 +201,7 @@ } } - function isHasVersions (isVersionable: boolean, doc: Doc): VersionableDoc | undefined { + function isHasVersions(isVersionable: boolean, doc: Doc): VersionableDoc | undefined { if (!isVersionable) return const vDoc = doc as VersionableDoc if (vDoc.baseId === undefined) return diff --git a/packages/presentation/src/components/DrawingBoard.svelte b/packages/presentation/src/components/DrawingBoard.svelte index d7cba893a4..c453eb70fc 100644 --- a/packages/presentation/src/components/DrawingBoard.svelte +++ b/packages/presentation/src/components/DrawingBoard.svelte @@ -68,7 +68,7 @@ const undoableCommands = document.getArray('drawing-commands') const commandProcessor = new DrawingCommandsProcessor(document, undoableCommands) - function onSavedCommandsChanged (): void { + function onSavedCommandsChanged(): void { model = commandProcessor.snapshot() setTimeout(() => { const status = commandProcessor.getUndoRedoAvailability() @@ -80,7 +80,7 @@ $: updateToolbarPosition(readonly, board, toolbar) $: updateEditableState(drawings, readonly) - function updateToolbarPosition (readonly: boolean, board: HTMLDivElement, toolbar: HTMLDivElement): void { + function updateToolbarPosition(readonly: boolean, board: HTMLDivElement, toolbar: HTMLDivElement): void { if (!readonly && board?.offsetTop !== undefined && toolbar?.clientHeight !== undefined) { // TODO: There should be a generic solution // this only estimates a free room above the picture in FilePreviewPopup @@ -88,17 +88,17 @@ } } - function dropTextEditor (): void { + function dropTextEditor(): void { changingCmdId = undefined cmdEditor = undefined } - function handleModification (): void { + function handleModification(): void { modified = true dropTextEditor() } - function updateEditableState (drawings: DrawingData[], readonly: boolean): void { + function updateEditableState(drawings: DrawingData[], readonly: boolean): void { const readOnlyStatusChanged = readonly !== currentReadonly const drawingsChanged = drawings !== currentDrawings @@ -128,7 +128,7 @@ currentReadonly = readonly } - function parseDrawing (data: DrawingData | undefined): void { + function parseDrawing(data: DrawingData | undefined): void { if (data?.content !== undefined && data?.content !== null) { try { const commands: DrawingCmd[] = JSON.parse(data.content) @@ -143,7 +143,7 @@ onSavedCommandsChanged() } - function saveDrawing (): void { + function saveDrawing(): void { if (modified && model !== undefined) { const data: DrawingData = { content: JSON.stringify(model) @@ -154,14 +154,14 @@ } } - function addCommand (command: DrawingCmd): void { + function addCommand(command: DrawingCmd): void { if (model !== undefined) { commandProcessor.addCommand(command) handleModification() } } - function showCommandProps (id: CommandUid): void { + function showCommandProps(id: CommandUid): void { changingCmdId = id for (const command of model ?? []) { if (command.id === id) { @@ -175,14 +175,14 @@ } } - function changeCommand (cmd: DrawingCmd): void { + function changeCommand(cmd: DrawingCmd): void { if (model !== undefined) { commandProcessor.changeCommand(cmd) handleModification() } } - function deleteCommand (id: CommandUid): void { + function deleteCommand(id: CommandUid): void { if (model !== undefined) { commandProcessor.deleteCommand(id) handleModification() diff --git a/packages/presentation/src/components/DrawingBoardToolbar.svelte b/packages/presentation/src/components/DrawingBoardToolbar.svelte index e5a89d73cf..42e311ba0c 100644 --- a/packages/presentation/src/components/DrawingBoardToolbar.svelte +++ b/packages/presentation/src/components/DrawingBoardToolbar.svelte @@ -80,7 +80,7 @@ export let tool: DrawingTool = 'pen' - function evaluateToolPresentation (tool: DrawingTool): ToolPresentation { + function evaluateToolPresentation(tool: DrawingTool): ToolPresentation { const found = tools.find((t) => t.tool === tool) if (found == null) { return tools[0] @@ -111,7 +111,7 @@ type PaletteCommandId = 'add-color' | 'remove-color' | 'reset-colors' - function showPaletteManagementMenu (ev: MouseEvent): void { + function showPaletteManagementMenu(ev: MouseEvent): void { const items: Array & { id: PaletteCommandId }> = [] if (userSelectedPalette.length < maxColors) { items.push({ @@ -173,7 +173,7 @@ }) } - function addColorPreset (): void { + function addColorPreset(): void { if (!userSelectedPalette.includes(penColor)) { userSelectedPalette = [...userSelectedPalette, penColor] localStorage.setItem(storageKey.colors, JSON.stringify(userSelectedPalette)) @@ -181,12 +181,12 @@ focusEditor() } - function selectColor (color: ColorMetaNameOrHex): void { + function selectColor(color: ColorMetaNameOrHex): void { penColor = color ?? defaultColor localStorage.setItem(storageKey.color, penColor) } - function showToolSelectionMenu (ev: MouseEvent): void { + function showToolSelectionMenu(ev: MouseEvent): void { const items: Array & { id: DrawingTool }> = [] for (const toolPresentation of tools) { if (toolPresentation.tool === 'pan' && !showPanTool) { @@ -221,20 +221,20 @@ fontSize = parseInt(localStorage.getItem(storageKey.fontSize) ?? '20') }) - function updatePenWidth (): void { + function updatePenWidth(): void { localStorage.setItem(storageKey.penWidth, penWidth.toString()) } - function updateEraserWidth (): void { + function updateEraserWidth(): void { localStorage.setItem(storageKey.eraserWidth, eraserWidth.toString()) } - function updateFontSize (): void { + function updateFontSize(): void { localStorage.setItem(storageKey.fontSize, fontSize.toString()) focusEditor() } - function focusEditor (): void { + function focusEditor(): void { setTimeout(() => { if (cmdEditor !== undefined) { cmdEditor.focus() diff --git a/packages/presentation/src/components/FilePreviewPopup.svelte b/packages/presentation/src/components/FilePreviewPopup.svelte index 4f8f96c05c..775d0f9c69 100644 --- a/packages/presentation/src/components/FilePreviewPopup.svelte +++ b/packages/presentation/src/components/FilePreviewPopup.svelte @@ -60,7 +60,7 @@ $: void loadDrawings(file) - async function loadDrawings (file: Ref | undefined): Promise { + async function loadDrawings(file: Ref | undefined): Promise { if (props.drawingAvailable === true) { if (props.loadDrawings !== undefined) { drawingLoading = true @@ -95,11 +95,11 @@ } }) - function toggleDrawingEdit (): void { + function toggleDrawingEdit(): void { props.drawingEditable = !(props.drawingEditable === true) } - function selectCurrentDrawing (ev: MouseEvent): void { + function selectCurrentDrawing(ev: MouseEvent): void { if (props.drawings === undefined || props.drawings.length === 0) { // no current means no history return diff --git a/packages/presentation/src/components/FileTypeIcon.svelte b/packages/presentation/src/components/FileTypeIcon.svelte index 47688ed43d..6a732cb062 100644 --- a/packages/presentation/src/components/FileTypeIcon.svelte +++ b/packages/presentation/src/components/FileTypeIcon.svelte @@ -15,7 +15,7 @@ diff --git a/packages/presentation/src/components/NavLink.svelte b/packages/presentation/src/components/NavLink.svelte index c15bb60ba8..22af684a5a 100644 --- a/packages/presentation/src/components/NavLink.svelte +++ b/packages/presentation/src/components/NavLink.svelte @@ -33,7 +33,7 @@ export let noSelect: boolean = true export let maxWidth: string | undefined = undefined - function clickHandler (e: MouseEvent): void { + function clickHandler(e: MouseEvent): void { if (disabled) return if (onClick !== undefined) { diff --git a/packages/presentation/src/components/ObjectPopup.svelte b/packages/presentation/src/components/ObjectPopup.svelte index 5e651b0176..b254268297 100644 --- a/packages/presentation/src/components/ObjectPopup.svelte +++ b/packages/presentation/src/components/ObjectPopup.svelte @@ -160,7 +160,7 @@ } } - async function searchSpotlight (search: string): Promise { + async function searchSpotlight(search: string): Promise { return (await searchFor('spotlight', search, category, 50)).items } diff --git a/packages/presentation/src/components/ObjectSearchPopup.svelte b/packages/presentation/src/components/ObjectSearchPopup.svelte index 9092643874..d1b8ba2430 100644 --- a/packages/presentation/src/components/ObjectSearchPopup.svelte +++ b/packages/presentation/src/components/ObjectSearchPopup.svelte @@ -67,11 +67,11 @@ let list: ListView let selection = 0 - function dispatchItem (item: ObjectSearchResult): void { + function dispatchItem(item: ObjectSearchResult): void { dispatch('close', item) } - export function onKeyDown (key: KeyboardEvent): boolean { + export function onKeyDown(key: KeyboardEvent): boolean { if (key.key === 'ArrowDown') { key.stopPropagation() key.preventDefault() @@ -107,9 +107,9 @@ return false } - export function done (): void {} + export function done(): void {} - const updateItems = reduceCalls(async function updateItems ( + const updateItems = reduceCalls(async function updateItems( cat: ObjectSearchCategory | undefined, query: string, relatedDocuments?: RelatedDocument[] diff --git a/packages/presentation/src/components/PDFViewer.svelte b/packages/presentation/src/components/PDFViewer.svelte index 550d219f44..c22e9ef147 100644 --- a/packages/presentation/src/components/PDFViewer.svelte +++ b/packages/presentation/src/components/PDFViewer.svelte @@ -33,7 +33,7 @@ const dispatch = createEventDispatcher() - function iconLabel (name: string): string { + function iconLabel(name: string): string { const parts = name.split('.') const ext = parts[parts.length - 1] return ext.substring(0, 4).toUpperCase() diff --git a/packages/presentation/src/components/SpaceMultiBoxList.svelte b/packages/presentation/src/components/SpaceMultiBoxList.svelte index d19105f461..809ad146ee 100644 --- a/packages/presentation/src/components/SpaceMultiBoxList.svelte +++ b/packages/presentation/src/components/SpaceMultiBoxList.svelte @@ -33,7 +33,7 @@ const dispatch = createEventDispatcher() - async function addSpace (evt: Event): Promise { + async function addSpace(evt: Event): Promise { showPopup( SpacesMultiPopup, { diff --git a/packages/presentation/src/components/SpacesPopup.svelte b/packages/presentation/src/components/SpacesPopup.svelte index fdc1cbeb6f..7657cfb581 100644 --- a/packages/presentation/src/components/SpacesPopup.svelte +++ b/packages/presentation/src/components/SpacesPopup.svelte @@ -67,7 +67,7 @@ $: getComponent(component) - async function getComponent (component: AnySvelteComponent | AnyComponent | undefined): Promise { + async function getComponent(component: AnySvelteComponent | AnyComponent | undefined): Promise { if (typeof component === 'string') { is = await getResource(component) } else { diff --git a/packages/presentation/src/components/extensions/ComponentExtensions.svelte b/packages/presentation/src/components/extensions/ComponentExtensions.svelte index 54a903e0f3..da11ecf4e9 100644 --- a/packages/presentation/src/components/extensions/ComponentExtensions.svelte +++ b/packages/presentation/src/components/extensions/ComponentExtensions.svelte @@ -13,8 +13,8 @@ void getClient() .findAll(plugin.class.ComponentPointExtension, { - extension - }) + extension + }) .then((res) => { extensions = res.filter((it) => it.accessLevel === undefined || hasAccountRole(currentAccount, it.accessLevel)) }) diff --git a/packages/presentation/src/components/markup/Mark.svelte b/packages/presentation/src/components/markup/Mark.svelte index 9b75da645d..453e8b47c6 100644 --- a/packages/presentation/src/components/markup/Mark.svelte +++ b/packages/presentation/src/components/markup/Mark.svelte @@ -22,7 +22,7 @@ export let mark: MarkupMark - function handleLink (e: MouseEvent): void { + function handleLink(e: MouseEvent): void { try { const href = mark.attrs?.href if (href != null && href !== '') { diff --git a/packages/presentation/src/components/markup/MarkdownNode.svelte b/packages/presentation/src/components/markup/MarkdownNode.svelte index e478c77e87..0c9ae26426 100644 --- a/packages/presentation/src/components/markup/MarkdownNode.svelte +++ b/packages/presentation/src/components/markup/MarkdownNode.svelte @@ -19,7 +19,7 @@ export let node: MarkupNode export let preview = false - function escapeHtml (unsafe: string): string { + function escapeHtml(unsafe: string): string { return unsafe .replace(/&/g, '&') .replace(/ { + function toRefBlob(blobId: AttrValue): Ref { return blobId as Ref } - function toRef (objectId: string): Ref { + function toRef(objectId: string): Ref { return objectId as Ref } - function toClassRef (objectClass: string): Ref> { + function toClassRef(objectClass: string): Ref> { if (objectClass === 'contact:class:Employee') { return 'contact:mixin:Employee' as Ref> } return objectClass as Ref> } - function toString (value: AttrValue | undefined): string | undefined { + function toString(value: AttrValue | undefined): string | undefined { return value != null ? `${value}` : undefined } - function toNumber (value: AttrValue | undefined): number | undefined { + function toNumber(value: AttrValue | undefined): number | undefined { if (typeof value === 'boolean') { return value ? 1 : 0 } diff --git a/packages/presentation/src/components/markup/ObjectNode.svelte b/packages/presentation/src/components/markup/ObjectNode.svelte index 025dcceac8..9d89ff1bd7 100644 --- a/packages/presentation/src/components/markup/ObjectNode.svelte +++ b/packages/presentation/src/components/markup/ObjectNode.svelte @@ -53,7 +53,7 @@ }) } - function onBrokenLinkClick (event: MouseEvent): void { + function onBrokenLinkClick(event: MouseEvent): void { if (_id !== undefined && withoutDoc.includes(_id)) return showPopup(MessageBox, { label: presentation.string.UnableToFollowMention, diff --git a/packages/presentation/src/components/markup/lite/LiteNodeContent.svelte b/packages/presentation/src/components/markup/lite/LiteNodeContent.svelte index f89bda1454..de56ce4ee0 100644 --- a/packages/presentation/src/components/markup/lite/LiteNodeContent.svelte +++ b/packages/presentation/src/components/markup/lite/LiteNodeContent.svelte @@ -28,22 +28,22 @@ let parsedTextWithEmojis: ParsedTextWithEmojis | undefined = undefined - function toRefBlob (blobId: AttrValue): Ref { + function toRefBlob(blobId: AttrValue): Ref { return blobId as Ref } - function toRef (objectId: string): Ref { + function toRef(objectId: string): Ref { return objectId as Ref } - function toClassRef (objectClass: string): Ref> { + function toClassRef(objectClass: string): Ref> { if (objectClass === 'contact:class:Employee') { return 'contact:mixin:Employee' as Ref> } return objectClass as Ref> } - function toString (value: AttrValue | undefined): string | undefined { + function toString(value: AttrValue | undefined): string | undefined { return value != null ? `${value}` : undefined } diff --git a/packages/presentation/src/configuration.ts b/packages/presentation/src/configuration.ts index eb9fde031d..63cd701bd4 100644 --- a/packages/presentation/src/configuration.ts +++ b/packages/presentation/src/configuration.ts @@ -40,7 +40,7 @@ export class ConfigurationManager { return configuration !== undefined && configuration.enabled } - hasResource(resource?: Resource | null): boolean | undefined { + hasResource (resource?: Resource | null): boolean | undefined { if (resource == null) { return false } diff --git a/packages/presentation/src/drafts.ts b/packages/presentation/src/drafts.ts index 1cd3964430..6d58804181 100644 --- a/packages/presentation/src/drafts.ts +++ b/packages/presentation/src/drafts.ts @@ -166,7 +166,7 @@ export class DraftController { removeDraft(id) } - static save(id: string, object: T, emptyObj: Partial | undefined = undefined): void { + static save (id: string, object: T, emptyObj: Partial | undefined = undefined): void { if (emptyObj !== undefined && isEmptyDraft(object, emptyObj)) { DraftController.remove(id) return diff --git a/packages/presentation/src/index.ts b/packages/presentation/src/index.ts index 305753389b..1e21076eb1 100644 --- a/packages/presentation/src/index.ts +++ b/packages/presentation/src/index.ts @@ -55,7 +55,7 @@ export { default as Image } from './components/Image.svelte' export { default as IconWithEmoji } from './components/IconWithEmoji.svelte' export { default as ObjectNode } from './components/markup/ObjectNode.svelte' export { default } from './plugin' -export * from './types' +export type * from './types' export * from './utils' export * from './file' export * from './filetypes' @@ -71,7 +71,7 @@ export * from './search' export * from './image' export * from './preview' export * from './sound' -export * from './stats' +export type * from './stats' export * from './drawing' export * from './drawingUtils' export * from './drawingColors' diff --git a/packages/presentation/src/link-preview.ts b/packages/presentation/src/link-preview.ts index 3e229713a6..68c1c1d6bd 100644 --- a/packages/presentation/src/link-preview.ts +++ b/packages/presentation/src/link-preview.ts @@ -32,8 +32,8 @@ export interface LinkPreviewDetails { } export type LinkPreviewAttachmentMetadata = Pick< -LinkPreviewDetails, -'title' | 'description' | 'image' | 'imageWidth' | 'imageHeight' + LinkPreviewDetails, + 'title' | 'description' | 'image' | 'imageWidth' | 'imageHeight' > export function canDisplayLinkPreview (val: LinkPreviewDetails): boolean { diff --git a/packages/presentation/src/pipeline.ts b/packages/presentation/src/pipeline.ts index 20f1e341df..df3987892c 100644 --- a/packages/presentation/src/pipeline.ts +++ b/packages/presentation/src/pipeline.ts @@ -115,7 +115,7 @@ export class PresentationPipelineImpl implements PresentationPipeline { return current } - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -136,7 +136,7 @@ export class PresentationPipelineImpl implements PresentationPipeline { } } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -157,7 +157,7 @@ export class PresentationPipelineImpl implements PresentationPipeline { } } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -165,7 +165,7 @@ export class PresentationPipelineImpl implements PresentationPipeline { return await this.client.findAllPage(_class, query, options) } - iterateAll( + iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -177,7 +177,7 @@ export class PresentationPipelineImpl implements PresentationPipeline { return await this.client.searchFulltext(query, options) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -197,16 +197,16 @@ export class PresentationPipelineImpl implements PresentationPipeline { } } - async subscribe( + async subscribe ( _class: Ref>, query: DocumentQuery, options: FindOptions | undefined, refresh: () => void ): Promise<{ - unsubscribe: () => void - query?: DocumentQuery - options?: FindOptions - }> { + unsubscribe: () => void + query?: DocumentQuery + options?: FindOptions + }> { return this.head !== undefined ? await this.head.subscribe(_class, query, options, refresh) : { unsubscribe: () => {} } @@ -261,7 +261,7 @@ export abstract class BasePresentationMiddleware { await this.client.close() } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -269,7 +269,7 @@ export abstract class BasePresentationMiddleware { return await this.provideFindAll(_class, query, options) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -277,16 +277,16 @@ export abstract class BasePresentationMiddleware { return await this.provideFindOne(_class, query, options) } - async subscribe( + async subscribe ( _class: Ref>, query: DocumentQuery, options: FindOptions | undefined, refresh: () => void ): Promise<{ - unsubscribe: () => void - query?: DocumentQuery - options?: FindOptions - }> { + unsubscribe: () => void + query?: DocumentQuery + options?: FindOptions + }> { return await this.provideSubscribe(_class, query, options, refresh) } @@ -297,7 +297,7 @@ export abstract class BasePresentationMiddleware { return await this.client.tx(tx) } - protected async provideFindAll( + protected async provideFindAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -308,7 +308,7 @@ export abstract class BasePresentationMiddleware { return await this.client.findAll(_class, query, options) } - protected async provideFindOne( + protected async provideFindOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -319,7 +319,7 @@ export abstract class BasePresentationMiddleware { return await this.client.findOne(_class, query, options) } - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -327,7 +327,7 @@ export abstract class BasePresentationMiddleware { return await this.provideDomainRequest(domain, params, options) } - protected async provideDomainRequest( + protected async provideDomainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -338,16 +338,16 @@ export abstract class BasePresentationMiddleware { return await this.client.domainRequest(domain, params, options) } - protected async provideSubscribe( + protected async provideSubscribe ( _class: Ref>, query: DocumentQuery, options: FindOptions | undefined, refresh: () => void ): Promise<{ - unsubscribe: () => void - query?: DocumentQuery - options?: FindOptions - }> { + unsubscribe: () => void + query?: DocumentQuery + options?: FindOptions + }> { if (this.next !== undefined) { return await this.next.subscribe(_class, query, options, refresh) } @@ -386,7 +386,7 @@ export class OptimizeQueryMiddleware extends BasePresentationMiddleware implemen return await this.provideTx(tx) } - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -394,20 +394,20 @@ export class OptimizeQueryMiddleware extends BasePresentationMiddleware implemen return await this.provideDomainRequest(domain, params, options) } - async subscribe( + async subscribe ( _class: Ref>, query: DocumentQuery, options: FindOptions | undefined, refresh: () => void ): Promise<{ - unsubscribe: () => void - query?: DocumentQuery - options?: FindOptions - }> { + unsubscribe: () => void + query?: DocumentQuery + options?: FindOptions + }> { return await this.provideSubscribe(_class, query, options, refresh) } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions | undefined @@ -438,7 +438,7 @@ export class OptimizeQueryMiddleware extends BasePresentationMiddleware implemen return await this.provideFindAll(_class, fQuery, fOptions) } - private optimizeQuery(fQuery: DocumentQuery, fOptions: FindOptions): void { + private optimizeQuery (fQuery: DocumentQuery, fOptions: FindOptions): void { if (typeof fQuery._id === 'string' && fOptions.sort !== undefined) { delete fOptions.sort } @@ -447,7 +447,7 @@ export class OptimizeQueryMiddleware extends BasePresentationMiddleware implemen } } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions | undefined diff --git a/packages/presentation/src/preview.ts b/packages/presentation/src/preview.ts index 15cdc2f572..c57d014b0a 100644 --- a/packages/presentation/src/preview.ts +++ b/packages/presentation/src/preview.ts @@ -31,9 +31,9 @@ export async function getBlobRef ( width?: number, height?: number ): Promise<{ - src: string - srcset: string - }> { + src: string + srcset: string +}> { return { src: getFileUrl(file, name), srcset: getSrcSet(file, width, height) diff --git a/packages/presentation/src/types.ts b/packages/presentation/src/types.ts index 3bf75bf463..883915242b 100644 --- a/packages/presentation/src/types.ts +++ b/packages/presentation/src/types.ts @@ -17,7 +17,7 @@ import { import { type Asset, type IntlString, type Resource } from '@hcengineering/platform' import { type AnyComponent, type AnySvelteComponent, type ComponentExtensionId } from '@hcengineering/ui/src/types' -export * from './components/breadcrumbs/types' +export type * from './components/breadcrumbs/types' /** * @public diff --git a/packages/presentation/src/utils.ts b/packages/presentation/src/utils.ts index 395ac538c7..bdf4b7e8e1 100644 --- a/packages/presentation/src/utils.ts +++ b/packages/presentation/src/utils.ts @@ -162,7 +162,7 @@ class UIClient extends TxOperations implements Client { } } - override async findAll( + override async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -170,7 +170,7 @@ class UIClient extends TxOperations implements Client { return await this.liveQuery.findAll(_class, query, options) } - override async findOne( + override async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -309,7 +309,7 @@ class ClientHookImpl implements Client { return this.client.getModel() } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -324,7 +324,7 @@ class ClientHookImpl implements Client { await this.client.close() } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -335,7 +335,7 @@ class ClientHookImpl implements Client { return await this.client.findAll(_class, query, options) } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -343,7 +343,7 @@ class ClientHookImpl implements Client { return await this.client.findAllPage(_class, query, options) } - iterateAll( + iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -351,7 +351,7 @@ class ClientHookImpl implements Client { return this.client.iterateAll(_class, query, options) } - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -505,7 +505,7 @@ export class LiveQuery { } } - query( + query ( _class: Ref>, query: DocumentQuery, callback: (result: FindResult) => void | Promise, @@ -533,7 +533,7 @@ export class LiveQuery { } ) - private doQuery( + private doQuery ( id: number, _class: Ref>, query: DocumentQuery, @@ -602,7 +602,7 @@ export class LiveQuery { } } - private needUpdate( + private needUpdate ( _class: Ref>, query: DocumentQuery, callback: (result: FindResult) => void | Promise, diff --git a/packages/rekoni/.eslintrc.js b/packages/rekoni/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/packages/rekoni/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/packages/rekoni/eslint.config.mjs b/packages/rekoni/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/rekoni/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/rekoni/package.json b/packages/rekoni/package.json index 2a59782688..9ea353e5ef 100644 --- a/packages/rekoni/package.json +++ b/packages/rekoni/package.json @@ -24,18 +24,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/packages/rekoni/src/index.ts b/packages/rekoni/src/index.ts index c997230208..6277aee0b5 100644 --- a/packages/rekoni/src/index.ts +++ b/packages/rekoni/src/index.ts @@ -19,7 +19,7 @@ import plugin from './plugin' import { ReconiDocument } from './types' export { default } from './plugin' -export * from './types' +export type * from './types' /** * @public diff --git a/packages/safe-fetch/.eslintrc.js b/packages/safe-fetch/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/packages/safe-fetch/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/packages/safe-fetch/eslint.config.mjs b/packages/safe-fetch/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/packages/safe-fetch/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/packages/safe-fetch/package.json b/packages/safe-fetch/package.json index 3a2bdaca21..b0c7a55a56 100644 --- a/packages/safe-fetch/package.json +++ b/packages/safe-fetch/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-config-love": "^157.0.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-secure-coding": "^5.4.4", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "typescript": "^5.9.3" }, "dependencies": { diff --git a/packages/safe-fetch/src/fetch.ts b/packages/safe-fetch/src/fetch.ts index 725e643068..5f59988ad7 100644 --- a/packages/safe-fetch/src/fetch.ts +++ b/packages/safe-fetch/src/fetch.ts @@ -294,5 +294,5 @@ export function createSafeFetch (opts: SafeFetchOptions = {}): typeof fetch { } } - return safeFetch as typeof fetch + return safeFetch } diff --git a/packages/theme/.eslintrc.js b/packages/theme/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/packages/theme/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/packages/theme/eslint.config.mjs b/packages/theme/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/packages/theme/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/packages/theme/package.json b/packages/theme/package.json index 34098d415a..55804acd95 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -18,22 +18,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/packages/theme/src/Theme.svelte b/packages/theme/src/Theme.svelte index 1e2837ffda..3dd490e10e 100644 --- a/packages/theme/src/Theme.svelte +++ b/packages/theme/src/Theme.svelte @@ -102,7 +102,7 @@ let remove: any = null - function checkSystemTheme (): void { + function checkSystemTheme(): void { const theme = $currentTheme if (remove !== null || theme !== 'theme-system') { remove() diff --git a/packages/ui/.eslintrc.js b/packages/ui/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/packages/ui/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/packages/ui/eslint.config.mjs b/packages/ui/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/packages/ui/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/packages/ui/package.json b/packages/ui/package.json index 790803bd6f..fdf7ae8162 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -19,26 +19,24 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/dompurify": "^3.0.5", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", @@ -48,7 +46,7 @@ "autolinker": "4.0.0", "date-fns": "^2.30.0", "date-fns-tz": "^2.0.0", - "dompurify": "^3.1.6", + "dompurify": "^3.4.15", "fast-equals": "^5.2.2", "svelte": "^4.2.20", "plyr": "3.7.8", diff --git a/packages/ui/src/colors.ts b/packages/ui/src/colors.ts index cd3ffd7899..863a29bbda 100644 --- a/packages/ui/src/colors.ts +++ b/packages/ui/src/colors.ts @@ -284,14 +284,14 @@ export function getPlatformColorByName (name: string, darkTheme: boolean): Color return getColorByName(name, darkTheme, whitePalette, darkPalette, defaultIndex) } -function getColorByName ( +function getColorByName( name: string, darkTheme: boolean, paletteLight: readonly ColorDefinition[], paletteDark: readonly ColorDefinition[], defaultIndex: number ): ColorDefinition -function getColorByName ( +function getColorByName( name: string, darkTheme: boolean, paletteLight: readonly ColorDefinition[], diff --git a/packages/ui/src/components/AccordionItem.svelte b/packages/ui/src/components/AccordionItem.svelte index ad367b3987..4bccc26d9c 100644 --- a/packages/ui/src/components/AccordionItem.svelte +++ b/packages/ui/src/components/AccordionItem.svelte @@ -49,7 +49,7 @@ if (isOpen) collapsed = false $: setTreeCollapsed(id, collapsed) - function handleClick (): void { + function handleClick(): void { if (disabled) return collapsed = !collapsed } diff --git a/packages/ui/src/components/Blurhash.svelte b/packages/ui/src/components/Blurhash.svelte index 7d052efad6..e027cd9d46 100644 --- a/packages/ui/src/components/Blurhash.svelte +++ b/packages/ui/src/components/Blurhash.svelte @@ -27,7 +27,7 @@ renderBlurhash(canvas, blurhash) } - function renderBlurhash (canvas: HTMLCanvasElement, blurhash: string): void { + function renderBlurhash(canvas: HTMLCanvasElement, blurhash: string): void { const ctx = canvas.getContext('2d') if (ctx !== null) { const pixels = decode(blurhash, width, height, punch) diff --git a/packages/ui/src/components/Button.svelte b/packages/ui/src/components/Button.svelte index b29c11a479..b7ce05f4b7 100644 --- a/packages/ui/src/components/Button.svelte +++ b/packages/ui/src/components/Button.svelte @@ -118,7 +118,7 @@ input.addEventListener('focus', updateFocus, { once: true }) } - function preventHandler (e: MouseEvent) { + function preventHandler(e: MouseEvent) { if (stopPropagation) { e.preventDefault() e.stopPropagation() diff --git a/packages/ui/src/components/ButtonBase.svelte b/packages/ui/src/components/ButtonBase.svelte index d6aa0b5806..646890e54e 100644 --- a/packages/ui/src/components/ButtonBase.svelte +++ b/packages/ui/src/components/ButtonBase.svelte @@ -55,7 +55,7 @@ } $: iconOnly = title === undefined && label === undefined && $$slots.default === undefined && icon !== undefined - export function focus () { + export function focus() { element?.focus() } diff --git a/packages/ui/src/components/ButtonIcon.svelte b/packages/ui/src/components/ButtonIcon.svelte index 0d079789a9..9213fcc45d 100644 --- a/packages/ui/src/components/ButtonIcon.svelte +++ b/packages/ui/src/components/ButtonIcon.svelte @@ -35,7 +35,7 @@ export let dataId: string | undefined = undefined export let element: HTMLButtonElement | undefined = undefined - export function focus () { + export function focus() { element?.focus() } diff --git a/packages/ui/src/components/ButtonMenu.svelte b/packages/ui/src/components/ButtonMenu.svelte index 05ec10d9c5..9178458be2 100644 --- a/packages/ui/src/components/ButtonMenu.svelte +++ b/packages/ui/src/components/ButtonMenu.svelte @@ -48,7 +48,7 @@ const dispatch = createEventDispatcher() - function openPopup () { + function openPopup() { if (!opened) { if (autoSelectionIfOne && items.length === 1) { selected = items[0].id diff --git a/packages/ui/src/components/ButtonWithDropdown.svelte b/packages/ui/src/components/ButtonWithDropdown.svelte index 29542b0a64..9f4e1391c5 100644 --- a/packages/ui/src/components/ButtonWithDropdown.svelte +++ b/packages/ui/src/components/ButtonWithDropdown.svelte @@ -47,7 +47,7 @@ const dispatch = createEventDispatcher() - function openDropdown (ev: MouseEvent): void { + function openDropdown(ev: MouseEvent): void { showPopup(SelectPopup, { value: dropdownItems }, eventToHTMLElement(ev), (res) => { dispatch('dropdown-selected', res) }) diff --git a/packages/ui/src/components/Chip.svelte b/packages/ui/src/components/Chip.svelte index 58d7ac0a87..220979e81b 100644 --- a/packages/ui/src/components/Chip.svelte +++ b/packages/ui/src/components/Chip.svelte @@ -26,13 +26,13 @@ let buttonRef: ButtonIcon | undefined - function handleBackspace (event: KeyboardEvent) { + function handleBackspace(event: KeyboardEvent) { if (event.key === 'Backspace') { dispatch('remove') } } - export function focus () { + export function focus() { buttonRef?.focus() } diff --git a/packages/ui/src/components/CircleButton.svelte b/packages/ui/src/components/CircleButton.svelte index 767e310706..dc0a427dd6 100644 --- a/packages/ui/src/components/CircleButton.svelte +++ b/packages/ui/src/components/CircleButton.svelte @@ -28,7 +28,7 @@ const dispatch = createEventDispatcher() - function onKeydown (key: KeyboardEvent): void { + function onKeydown(key: KeyboardEvent): void { if (key.code === 'Space') { key.preventDefault() key.stopPropagation() diff --git a/packages/ui/src/components/CodeForm.svelte b/packages/ui/src/components/CodeForm.svelte index 85d277b4e2..4a770fc96c 100644 --- a/packages/ui/src/components/CodeForm.svelte +++ b/packages/ui/src/components/CodeForm.svelte @@ -29,23 +29,23 @@ let formElement: HTMLFormElement | undefined - function trim (field: string): void { + function trim(field: string): void { formData[field] = formData[field].trim() } - export function clear (): void { + export function clear(): void { Object.keys(formData).forEach((key) => { formData[key] = '' }) } - async function validateCode (): Promise { + async function validateCode(): Promise { const code = Object.values(formData).join('') dispatch('submit', code) } - function onInput (e: Event): void { + function onInput(e: Event): void { if (e.target == null) return const target = e.target as HTMLInputElement const { value } = target @@ -64,7 +64,7 @@ } } - function onKeydown (e: KeyboardEvent): void { + function onKeydown(e: KeyboardEvent): void { if (e.key === undefined) { return } @@ -86,7 +86,7 @@ } } - function onPaste (e: ClipboardEvent): void { + function onPaste(e: ClipboardEvent): void { e.preventDefault() if (e.clipboardData == null) return const text = e.clipboardData.getData('text') diff --git a/packages/ui/src/components/ColorPopup.svelte b/packages/ui/src/components/ColorPopup.svelte index c6233c60c3..aa974cabac 100644 --- a/packages/ui/src/components/ColorPopup.svelte +++ b/packages/ui/src/components/ColorPopup.svelte @@ -38,12 +38,12 @@ let selection = 0 let list: ListView - async function handleSelection (_: Event | undefined, selection: number): Promise { + async function handleSelection(_: Event | undefined, selection: number): Promise { const space = objects[selection] dispatch('close', space) } - function onKeydown (key: KeyboardEvent): void { + function onKeydown(key: KeyboardEvent): void { if (key.code === 'ArrowUp') { key.stopPropagation() key.preventDefault() diff --git a/packages/ui/src/components/Component.svelte b/packages/ui/src/components/Component.svelte index 7569fd62a8..049c4aec2f 100644 --- a/packages/ui/src/components/Component.svelte +++ b/packages/ui/src/components/Component.svelte @@ -42,10 +42,10 @@ const filterDefaultUndefined = (pnew: any, pold: any): any => pnew != null ? Object.fromEntries( - Object.entries(clone(pnew, undefined, undefined, 10)).filter( - ([k, v]) => v !== undefined || pold?.[k] !== undefined + Object.entries(clone(pnew, undefined, undefined, 10)).filter( + ([k, v]) => v !== undefined || pold?.[k] !== undefined + ) ) - ) : pnew let _props: any = filterDefaultUndefined(props, props) @@ -65,7 +65,7 @@ let error: any let counter = 0 - function updateComponent (_is: AnyComponent | AnySvelteComponent): void { + function updateComponent(_is: AnyComponent | AnySvelteComponent): void { const current = ++counter if (_is == null) { Ctor = undefined diff --git a/packages/ui/src/components/Dialog.svelte b/packages/ui/src/components/Dialog.svelte index ddfed586fc..c8b8a89a44 100644 --- a/packages/ui/src/components/Dialog.svelte +++ b/packages/ui/src/components/Dialog.svelte @@ -36,7 +36,7 @@ const dispatch = createEventDispatcher() - export function maximize (): void { + export function maximize(): void { toggleFullSize = true } diff --git a/packages/ui/src/components/Dock.svelte b/packages/ui/src/components/Dock.svelte index d58ea1b8af..eff851b53a 100644 --- a/packages/ui/src/components/Dock.svelte +++ b/packages/ui/src/components/Dock.svelte @@ -15,7 +15,7 @@ diff --git a/packages/ui/src/components/EditWithIcon.svelte b/packages/ui/src/components/EditWithIcon.svelte index d87405bb86..e298e75846 100644 --- a/packages/ui/src/components/EditWithIcon.svelte +++ b/packages/ui/src/components/EditWithIcon.svelte @@ -39,7 +39,7 @@ let textHTML: HTMLInputElement let phTranslate: string = '' - export function focus (): void { + export function focus(): void { textHTML.focus() autoFocus = false } diff --git a/packages/ui/src/components/EmbeddedHTML.svelte b/packages/ui/src/components/EmbeddedHTML.svelte index e8cd5adfb7..a701a4016c 100644 --- a/packages/ui/src/components/EmbeddedHTML.svelte +++ b/packages/ui/src/components/EmbeddedHTML.svelte @@ -25,7 +25,7 @@ let iframeSrc: string | undefined - async function loadFile (src: string): Promise { + async function loadFile(src: string): Promise { if (iframeSrc !== undefined) { URL.revokeObjectURL(iframeSrc) iframeSrc = undefined diff --git a/packages/ui/src/components/FilterButton.svelte b/packages/ui/src/components/FilterButton.svelte index 420b1b8d18..0c71b3f64f 100644 --- a/packages/ui/src/components/FilterButton.svelte +++ b/packages/ui/src/components/FilterButton.svelte @@ -36,24 +36,24 @@ change: ActiveFilter[] }>() - function clearFilters (): void { + function clearFilters(): void { dispatch('change', []) } - function addFilter (filter: ActiveFilter): void { + function addFilter(filter: ActiveFilter): void { // Remove any existing filter for the same category and add the new one const filtered = activeFilters.filter((f) => f.categoryId !== filter.categoryId) dispatch('change', [...filtered, filter]) } - function removeFilter (categoryId: string): void { + function removeFilter(categoryId: string): void { dispatch( 'change', activeFilters.filter((f) => f.categoryId !== categoryId) ) } - function showFilterPopup (e: MouseEvent): void { + function showFilterPopup(e: MouseEvent): void { const target = eventToHTMLElement(e) showPopup( FilterCategoryPopup, diff --git a/packages/ui/src/components/FilterCategoryPopup.svelte b/packages/ui/src/components/FilterCategoryPopup.svelte index 7139878c7f..009da4debc 100644 --- a/packages/ui/src/components/FilterCategoryPopup.svelte +++ b/packages/ui/src/components/FilterCategoryPopup.svelte @@ -30,17 +30,17 @@ let selectedCategory: FilterCategory | null = null let view: 'categories' | 'options' = 'categories' - function selectCategory (category: FilterCategory): void { + function selectCategory(category: FilterCategory): void { selectedCategory = category view = 'options' } - function goBackToCategories (): void { + function goBackToCategories(): void { selectedCategory = null view = 'categories' } - function selectOption (option: FilterOption): void { + function selectOption(option: FilterOption): void { if (selectedCategory === null) return const filter: ActiveFilter = { @@ -53,22 +53,22 @@ dispatch('close') } - function clearCategoryFilter (): void { + function clearCategoryFilter(): void { if (selectedCategory === null) return onFilterRemove(selectedCategory.id) dispatch('close') } - function isActive (categoryId: string): boolean { + function isActive(categoryId: string): boolean { return activeFilters.some((f) => f.categoryId === categoryId) } - function isOptionSelected (optionId: string): boolean { + function isOptionSelected(optionId: string): boolean { if (selectedCategory === null) return false return activeFilters.some((f) => f.categoryId === selectedCategory?.id && f.optionId === optionId) } - function getActiveOption (categoryId: string): string { + function getActiveOption(categoryId: string): string { const filter = activeFilters.find((f) => f.categoryId === categoryId) return filter !== undefined ? filter.optionLabel : '' } diff --git a/packages/ui/src/components/FilterOptionPopup.svelte b/packages/ui/src/components/FilterOptionPopup.svelte index a01a511656..a4578b5077 100644 --- a/packages/ui/src/components/FilterOptionPopup.svelte +++ b/packages/ui/src/components/FilterOptionPopup.svelte @@ -21,7 +21,7 @@ export let onFilterChange: (filter: ActiveFilter) => void export let onFilterRemove: (categoryId: string) => void - function selectOption (option: FilterOption): void { + function selectOption(option: FilterOption): void { const filter: ActiveFilter = { categoryId: category.id, optionId: option.id, @@ -31,11 +31,11 @@ onFilterChange(filter) } - function clearFilter (): void { + function clearFilter(): void { onFilterRemove(category.id) } - function isSelected (optionId: string): boolean { + function isSelected(optionId: string): boolean { return activeFilters.some((f) => f.categoryId === category.id && f.optionId === optionId) } diff --git a/packages/ui/src/components/FocusHandler.svelte b/packages/ui/src/components/FocusHandler.svelte index 5da16d97af..324462e83b 100644 --- a/packages/ui/src/components/FocusHandler.svelte +++ b/packages/ui/src/components/FocusHandler.svelte @@ -4,7 +4,7 @@ export let manager: FocusManager export let isEnabled: boolean = true - function handleKey (evt: KeyboardEvent): void { + function handleKey(evt: KeyboardEvent): void { if (evt.code === 'Tab' && isEnabled) { evt.preventDefault() evt.stopPropagation() diff --git a/packages/ui/src/components/Header.svelte b/packages/ui/src/components/Header.svelte index c58ca2d26c..5da56ca694 100644 --- a/packages/ui/src/components/Header.svelte +++ b/packages/ui/src/components/Header.svelte @@ -86,7 +86,7 @@ if (closeButton) window.removeEventListener('keydown', _close) }) - function _close (ev: KeyboardEvent): void { + function _close(ev: KeyboardEvent): void { if (closeButton && ev.key === 'Escape' && closeOnEscape) { ev.preventDefault() ev.stopPropagation() diff --git a/packages/ui/src/components/HeaderButton.svelte b/packages/ui/src/components/HeaderButton.svelte index 5c258e8ab5..961ffe6f6c 100644 --- a/packages/ui/src/components/HeaderButton.svelte +++ b/packages/ui/src/components/HeaderButton.svelte @@ -29,7 +29,7 @@ $: filterVisibleActions(allowedActions, visibleActions) $: filterAllowedActions(actions).catch(() => {}) - function filterVisibleActions (allowed: HeaderButtonAction[], visible: (string | number | null)[]): void { + function filterVisibleActions(allowed: HeaderButtonAction[], visible: (string | number | null)[]): void { items = allowed.filter((action) => visible.includes(action.id)) mainAction = items.find((a) => a.id === mainActionId) if (mainAction === undefined && items.length > 0) { @@ -37,7 +37,7 @@ } } - async function filterAllowedActions (actions: HeaderButtonAction[]): Promise { + async function filterAllowedActions(actions: HeaderButtonAction[]): Promise { const result: HeaderButtonAction[] = [] for (const action of actions) { if (await isActionAllowed(action)) { @@ -49,7 +49,7 @@ return result } - async function isActionAllowed (action: HeaderButtonAction): Promise { + async function isActionAllowed(action: HeaderButtonAction): Promise { if (action.accountRole === undefined && action.permissions === undefined) return true if (action.accountRole !== undefined && hasAccountRole(getCurrentAccount(), action.accountRole)) return true if (action.permissions !== undefined) { diff --git a/packages/ui/src/components/Icon.svelte b/packages/ui/src/components/Icon.svelte index 1f259e7632..0a9bc9404e 100644 --- a/packages/ui/src/components/Icon.svelte +++ b/packages/ui/src/components/Icon.svelte @@ -22,11 +22,11 @@ export let iconProps: any | undefined = undefined export let fill: string | undefined = 'currentColor' - function isAsset (icon: Asset | AnySvelteComponent): boolean { + function isAsset(icon: Asset | AnySvelteComponent): boolean { return typeof icon === 'string' } - function toAsset (icon: AnySvelteComponent | Asset): Asset { + function toAsset(icon: AnySvelteComponent | Asset): Asset { return icon as Asset } diff --git a/packages/ui/src/components/Image.svelte b/packages/ui/src/components/Image.svelte index 5fcc2fc48a..480e98dd10 100644 --- a/packages/ui/src/components/Image.svelte +++ b/packages/ui/src/components/Image.svelte @@ -27,12 +27,12 @@ let retry: number = 0 - function handleLoad (): void { + function handleLoad(): void { retry = 0 dispatch('load') } - function handleLoadStart (): void { + function handleLoadStart(): void { dispatch('loadstart') } @@ -41,7 +41,7 @@ handleLoadStart() } - function handleError (event: any): void { + function handleError(event: any): void { if (retry > 3) { event.target.src = undefined } else if (retry > 0) { diff --git a/packages/ui/src/components/ListView.svelte b/packages/ui/src/components/ListView.svelte index c1e98444ee..4e9ffde6b3 100644 --- a/packages/ui/src/components/ListView.svelte +++ b/packages/ui/src/components/ListView.svelte @@ -37,13 +37,13 @@ let oldSelection = Date.now() - function onRow (item: number): void { + function onRow(item: number): void { if (updateSelection(item)) { dispatch('on-select', item) } } - function updateSelection (item: number): boolean { + function updateSelection(item: number): boolean { const now = Date.now() if (now - oldSelection >= 25) { selection = item @@ -53,7 +53,7 @@ return false } - export function select (pos: number): void { + export function select(pos: number): void { if (pos < 0) { pos = 0 } diff --git a/packages/ui/src/components/Menu.svelte b/packages/ui/src/components/Menu.svelte index abae62e837..9010c28b2e 100644 --- a/packages/ui/src/components/Menu.svelte +++ b/packages/ui/src/components/Menu.svelte @@ -79,7 +79,7 @@ closePopup(category) }) - function showActionPopup (action: Action, target: HTMLElement, isPopupHidden?: boolean): void { + function showActionPopup(action: Action, target: HTMLElement, isPopupHidden?: boolean): void { closePopup(category) closePopup(nextCategory) @@ -96,13 +96,13 @@ ) } } - function focusTarget (action: Action, target: HTMLElement, isPopupHidden?: boolean): void { + function focusTarget(action: Action, target: HTMLElement, isPopupHidden?: boolean): void { if (focusSpeed && target !== activeElement) { activeElement = target showActionPopup(action, target, isPopupHidden) } } - export function clearFocus (): void { + export function clearFocus(): void { closePopup(category) activeElement = popup } diff --git a/packages/ui/src/components/Modal.svelte b/packages/ui/src/components/Modal.svelte index 4e226981ca..42a4a12a46 100644 --- a/packages/ui/src/components/Modal.svelte +++ b/packages/ui/src/components/Modal.svelte @@ -43,7 +43,7 @@ const dispatch = createEventDispatcher() - function close (): void { + function close(): void { if (onCancel !== undefined) { onCancel() } else { @@ -51,7 +51,7 @@ } } - function onKeyDown (ev: KeyboardEvent): void { + function onKeyDown(ev: KeyboardEvent): void { if (ev.key === 'Escape') { ev.preventDefault() ev.stopPropagation() diff --git a/packages/ui/src/components/ModeSelector.svelte b/packages/ui/src/components/ModeSelector.svelte index 48f14fcd25..4d8661b9e1 100644 --- a/packages/ui/src/components/ModeSelector.svelte +++ b/packages/ui/src/components/ModeSelector.svelte @@ -11,15 +11,15 @@ $: modeList = props.config != null ? props.config.map((c) => { - return { - id: c[0], - labelIntl: c[1], - labelParams: c[2], - action: () => { - props.onChange(c[0]) + return { + id: c[0], + labelIntl: c[1], + labelParams: c[2], + action: () => { + props.onChange(c[0]) + } } - } - }) + }) : [] diff --git a/packages/ui/src/components/ModernDialog.svelte b/packages/ui/src/components/ModernDialog.svelte index 1518a64e27..e3f51afd5f 100644 --- a/packages/ui/src/components/ModernDialog.svelte +++ b/packages/ui/src/components/ModernDialog.svelte @@ -49,15 +49,15 @@ const dispatch = createEventDispatcher() - function submit (): void { + function submit(): void { dispatch('submit') } - function close (): void { + function close(): void { dispatch('close') } - function cancel (): void { + function cancel(): void { dispatch('cancel') if (shouldCloseOnCancel) { diff --git a/packages/ui/src/components/ModernTab.svelte b/packages/ui/src/components/ModernTab.svelte index 7fea148ad8..62a39e0da9 100644 --- a/packages/ui/src/components/ModernTab.svelte +++ b/packages/ui/src/components/ModernTab.svelte @@ -33,7 +33,7 @@ const dispatch = createEventDispatcher() - function handleContextMenu (e: MouseEvent): void { + function handleContextMenu(e: MouseEvent): void { if (readonly) return e.preventDefault() e.stopPropagation() diff --git a/packages/ui/src/components/MouseSpeedTracker.svelte b/packages/ui/src/components/MouseSpeedTracker.svelte index 889a7ba0a6..69a3e9e600 100644 --- a/packages/ui/src/components/MouseSpeedTracker.svelte +++ b/packages/ui/src/components/MouseSpeedTracker.svelte @@ -30,7 +30,7 @@ $: focusSpeed = speedD < 50 - function update (now: number) { + function update(now: number) { maxSpeedY = 0 maxSpeedX = 0 maxSpeedD = 0 @@ -38,7 +38,7 @@ $: update($ticker) - function trackMouse (evt: MouseEvent): void { + function trackMouse(evt: MouseEvent): void { if (timestamp === 0) { timestamp = Date.now() lastMouseX = evt.screenX diff --git a/packages/ui/src/components/MultiProgress.svelte b/packages/ui/src/components/MultiProgress.svelte index 7ac0b6094e..a155c4416a 100644 --- a/packages/ui/src/components/MultiProgress.svelte +++ b/packages/ui/src/components/MultiProgress.svelte @@ -31,7 +31,7 @@ const width: number[] = [] $: width.length = filtred.length - function getLeft (width: number[], i: number): number { + function getLeft(width: number[], i: number): number { let res = 0 for (let index = 0; index < width.length; index++) { if (index === i) break @@ -40,7 +40,7 @@ return res } - function getWidth (values: Progress[], i: number): number { + function getWidth(values: Progress[], i: number): number { let value = values[i].value if (value > max) value = max if (value < min) value = min diff --git a/packages/ui/src/components/NavGroup.svelte b/packages/ui/src/components/NavGroup.svelte index 0bb1680e8e..ad8e4ed3f7 100644 --- a/packages/ui/src/components/NavGroup.svelte +++ b/packages/ui/src/components/NavGroup.svelte @@ -54,7 +54,7 @@ export let noDivider: boolean = false export let showMenu: boolean = false export let shouldTooltip: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false export let draggable: boolean = false export let actions: Action[] = [] export let _id: Ref | string | undefined = undefined @@ -72,7 +72,7 @@ } } - function toggle (e: MouseEvent): void { + function toggle(e: MouseEvent): void { e.stopPropagation() e.preventDefault() if (!empty) { @@ -81,7 +81,7 @@ } } - function handleMenuClicked (ev: MouseEvent): void { + function handleMenuClicked(ev: MouseEvent): void { if (actions.length === 0) return ev.stopPropagation() pressed = true @@ -166,7 +166,7 @@ {#if !empty}

- {#if (!isOpen && visible) || forciblyСollapsed} + {#if (!isOpen && visible) || forciblyCollapsed} {:else} diff --git a/packages/ui/src/components/NavItem.svelte b/packages/ui/src/components/NavItem.svelte index a9edbd175b..ef8f6ee05d 100644 --- a/packages/ui/src/components/NavItem.svelte +++ b/packages/ui/src/components/NavItem.svelte @@ -50,7 +50,7 @@ export let empty: boolean = false export let collapsedPrefix: string = '' export let visible: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false export let level: number = 0 export let _id: any = undefined @@ -159,9 +159,9 @@ {/if} -{#if (isFold && (isOpen || (!isOpen && visible)) && !empty) || forciblyСollapsed} +{#if (isFold && (isOpen || (!isOpen && visible)) && !empty) || forciblyCollapsed}
- {#if (!isOpen && visible) || forciblyСollapsed} + {#if (!isOpen && visible) || forciblyCollapsed} {:else} diff --git a/packages/ui/src/components/NestedDropdown.svelte b/packages/ui/src/components/NestedDropdown.svelte index f6e466f49d..5ff1ac4233 100644 --- a/packages/ui/src/components/NestedDropdown.svelte +++ b/packages/ui/src/components/NestedDropdown.svelte @@ -41,7 +41,7 @@ const dispatch = createEventDispatcher() - function openPopup (): void { + function openPopup(): void { if (!opened) { opened = true showPopup(NestedMenu, { items, withIcon, disableFocusOnMouseover, withSearch }, container, (result) => { diff --git a/packages/ui/src/components/NestedMenu.svelte b/packages/ui/src/components/NestedMenu.svelte index 859691ed04..f5247ec800 100644 --- a/packages/ui/src/components/NestedMenu.svelte +++ b/packages/ui/src/components/NestedMenu.svelte @@ -53,7 +53,7 @@ $: displayItems = withSearch ? filteredItems : items // Prevent resize observer from triggering on initial render and debounce rapid changes - function handleResize (): void { + function handleResize(): void { if (isInitialRender && withSearch) { isInitialRender = false return @@ -79,11 +79,11 @@ } } - function onNestedSelect (val: any): void { + function onNestedSelect(val: any): void { dispatch('close', val) } - function click (val: DropdownIntlItem): void { + function click(val: DropdownIntlItem): void { onSelect?.(val) dispatch('close', val) } diff --git a/packages/ui/src/components/NestedSelectPopup.svelte b/packages/ui/src/components/NestedSelectPopup.svelte index 3be6c1e7cb..a87dd807d4 100644 --- a/packages/ui/src/components/NestedSelectPopup.svelte +++ b/packages/ui/src/components/NestedSelectPopup.svelte @@ -37,7 +37,7 @@ const dispatch = createEventDispatcher() let search: string = '' - function filterNodes (nodes: NestedSelectItem[], query: string): NestedSelectItem[] { + function filterNodes(nodes: NestedSelectItem[], query: string): NestedSelectItem[] { if (!query) return nodes const q = query.toLowerCase() @@ -57,7 +57,7 @@ $: displayItems = isTopLevel ? filterNodes(items, search) : items - function toggle (id: string | number): void { + function toggle(id: string | number): void { const set = new Set(selectedValues) if (set.has(id)) { set.delete(id) @@ -69,7 +69,7 @@ onChange?.(selectedValues) } - function handleUpdate (values: (string | number)[]): void { + function handleUpdate(values: (string | number)[]): void { selectedValues = values dispatch('update', selectedValues) onChange?.(selectedValues) diff --git a/packages/ui/src/components/NumberInput.svelte b/packages/ui/src/components/NumberInput.svelte index 745f875406..21785d2990 100644 --- a/packages/ui/src/components/NumberInput.svelte +++ b/packages/ui/src/components/NumberInput.svelte @@ -55,7 +55,7 @@ } } - function setValue (val: number | undefined, maxValue: number | undefined, minValue: number | undefined): void { + function setValue(val: number | undefined, maxValue: number | undefined, minValue: number | undefined): void { if (typeof val !== 'number' || Number.isNaN(val)) { dispatch('change') return @@ -73,7 +73,7 @@ phTranslate = res }) - function computeSize (t: HTMLInputElement | EventTarget | null) { + function computeSize(t: HTMLInputElement | EventTarget | null) { if (t == null) { return } @@ -103,10 +103,10 @@ computeSize(input) }) - export function focusInput () { + export function focusInput() { input?.focus() } - export function selectInput () { + export function selectInput() { input?.select() } @@ -126,7 +126,7 @@ input.addEventListener('focus', updateFocus, { once: true }) } - export function focus (): void { + export function focus(): void { input.focus() } diff --git a/packages/ui/src/components/Panel.svelte b/packages/ui/src/components/Panel.svelte index ecacc188f1..58751648ab 100644 --- a/packages/ui/src/components/Panel.svelte +++ b/packages/ui/src/components/Panel.svelte @@ -59,11 +59,11 @@ export let overflowExtra: boolean = false export let element: HTMLElement | undefined = undefined - export function getAside (): string | boolean { + export function getAside(): string | boolean { if (customAside) return selectedAside return asideShown } - export function setAside (id: string | boolean): void { + export function setAside(id: string | boolean): void { if (typeof id === 'string' && customAside) { const i = customAside.findIndex((as) => as.id === id) if (i === -1) return diff --git a/packages/ui/src/components/PanelInstance.svelte b/packages/ui/src/components/PanelInstance.svelte index 329e01ea0c..fff116abf0 100644 --- a/packages/ui/src/components/PanelInstance.svelte +++ b/packages/ui/src/components/PanelInstance.svelte @@ -51,7 +51,7 @@ let keepSize: boolean = false let props: PanelProps | undefined - function _close (): void { + function _close(): void { closePanel() } @@ -69,7 +69,7 @@ props = undefined } - function escapeClose (): void { + function escapeClose(): void { // Check if there is popup visible, then ignore if ($popupstore.length > 0) { return @@ -107,13 +107,13 @@ } } - function handleKeydown (ev: KeyboardEvent): void { + function handleKeydown(ev: KeyboardEvent): void { if (ev.key === 'Escape') { escapeClose() } } - function _open (): void { + function _open(): void { if (modalHTML != null && props != null) { if (props.element === 'content') { modalHTML.classList.add('bg') @@ -154,7 +154,7 @@ } } - export function fitPopupInstance (): void { + export function fitPopupInstance(): void { if (props != null && contentPanel != null) fitPopup(props, contentPanel) } diff --git a/packages/ui/src/components/PlainTextEditor.svelte b/packages/ui/src/components/PlainTextEditor.svelte index 0f2996f21b..718b8e302e 100644 --- a/packages/ui/src/components/PlainTextEditor.svelte +++ b/packages/ui/src/components/PlainTextEditor.svelte @@ -47,7 +47,7 @@ afterUpdate(adjustHeight) - function adjustHeight (): void { + function adjustHeight(): void { if (input == null) { return } @@ -56,7 +56,7 @@ input.style.height = `${input.scrollHeight + 2}px` } - export function focus (): void { + export function focus(): void { input.focus() } diff --git a/packages/ui/src/components/Popup.svelte b/packages/ui/src/components/Popup.svelte index 6f1db96fbd..7abfdcd992 100644 --- a/packages/ui/src/components/Popup.svelte +++ b/packages/ui/src/components/Popup.svelte @@ -15,10 +15,10 @@ @@ -35,7 +35,7 @@ const instances: PopupInstance[] = [] - export function fitPopupInstance (): void { + export function fitPopupInstance(): void { instances.forEach((p) => p.fitPopupInstance()) } diff --git a/packages/ui/src/components/PopupInstance.svelte b/packages/ui/src/components/PopupInstance.svelte index 8c4543ee6b..4c5f3a34f4 100644 --- a/packages/ui/src/components/PopupInstance.svelte +++ b/packages/ui/src/components/PopupInstance.svelte @@ -84,17 +84,17 @@ (el) => element === el ) - function _update (result: any): void { + function _update(result: any): void { if (onUpdate !== undefined) onUpdate(result) } - function _close (result: any): void { + function _close(result: any): void { if (onClose !== undefined) onClose(result) overlay = false close() } - function escapeClose (): void { + function escapeClose(): void { if (componentInstance?.canClose) { if (!componentInstance.canClose()) return } @@ -120,7 +120,7 @@ options.fullSize = fullSize } - function handleKeydown (ev: KeyboardEvent) { + function handleKeydown(ev: KeyboardEvent) { if (ev.key === 'Escape' && is && top) { ev.preventDefault() ev.stopPropagation() @@ -176,7 +176,7 @@ } $: updatedPopupParams(popupParams) - function mouseDown (e: MouseEvent & { currentTarget: EventTarget & HTMLDivElement }): void { + function mouseDown(e: MouseEvent & { currentTarget: EventTarget & HTMLDivElement }): void { if (element !== 'movable') return const rect = e.currentTarget.getBoundingClientRect() popupParams = { x: rect.left, y: rect.top, width: rect.width, height: rect.height } @@ -187,7 +187,7 @@ window.addEventListener('mouseup', mouseUp) } - function mouseMove (e: MouseEvent): void { + function mouseMove(e: MouseEvent): void { if (element !== 'movable' && !drag) return let newTop = e.clientY - dragParams.offsetY let newLeft = e.clientX - dragParams.offsetX @@ -202,13 +202,13 @@ popupParams = { ...popupParams, x: newLeft, y: newTop } } - function mouseUp (): void { + function mouseUp(): void { drag = false window.removeEventListener('mousemove', mouseMove) window.removeEventListener('mouseup', mouseUp) } - function checkSize (): void { + function checkSize(): void { const rect = modalHTML.getBoundingClientRect() const newParams: PopupParams = { x: rect.left, y: rect.top, width: rect.width, height: rect.height } if (popupParams.width === 0 && popupParams.height === 0) popupParams = newParams @@ -249,7 +249,7 @@ locked = false } - export function fitPopupInstance (): void { + export function fitPopupInstance(): void { if (modalHTML) { fitPopup(modalHTML, element, contentPanel) } diff --git a/packages/ui/src/components/Progress.svelte b/packages/ui/src/components/Progress.svelte index 0063416906..721c5ec208 100644 --- a/packages/ui/src/components/Progress.svelte +++ b/packages/ui/src/components/Progress.svelte @@ -32,13 +32,13 @@ const dispatch = createEventDispatcher() - function click (e: MouseEvent): void { + function click(e: MouseEvent): void { if (!editable) return calcValue(e) dispatch('change', value) } - function calcValue (e: MouseEvent): void { + function calcValue(e: MouseEvent): void { const rect = (e.currentTarget as HTMLElement).getBoundingClientRect() const x = e.clientX - rect.left - $deviceOptionsStore.fontSize / 2 let pos = x / (rect.width - $deviceOptionsStore.fontSize) @@ -47,14 +47,14 @@ value = (max - min) * pos + min } - function save (): void { + function save(): void { if (drag) { dispatch('change', value) drag = false } } - function move (e: MouseEvent): void { + function move(e: MouseEvent): void { if (!drag) return calcValue(e) } diff --git a/packages/ui/src/components/ScrollBox.svelte b/packages/ui/src/components/ScrollBox.svelte index 1139537f4a..4bfbf6c93b 100644 --- a/packages/ui/src/components/ScrollBox.svelte +++ b/packages/ui/src/components/ScrollBox.svelte @@ -29,7 +29,7 @@ if (autoscrollable && autoscroll) div.scrollTo(0, div.scrollHeight) }) - function setAutoscroll () { + function setAutoscroll() { closeTooltip() autoscroll = div.scrollTop > div.scrollHeight - div.clientHeight - 50 } diff --git a/packages/ui/src/components/Scroller.svelte b/packages/ui/src/components/Scroller.svelte index 10f0ecca64..11ce7fad82 100644 --- a/packages/ui/src/components/Scroller.svelte +++ b/packages/ui/src/components/Scroller.svelte @@ -56,13 +56,13 @@ export let maxHeight: number | undefined = undefined export let hideBar: boolean = false - export function scroll (top: number, left?: number, behavior: 'auto' | 'smooth' = 'auto') { + export function scroll(top: number, left?: number, behavior: 'auto' | 'smooth' = 'auto') { if (divScroll) { if (top !== 0) divScroll.scroll({ top, left: 0, behavior }) if (left !== 0 && left !== undefined) divScroll.scroll({ top: 0, left, behavior }) } } - export function scrollBy (top: number, left?: number, behavior: 'auto' | 'smooth' = 'auto') { + export function scrollBy(top: number, left?: number, behavior: 'auto' | 'smooth' = 'auto') { if (divScroll) { if (top !== 0) divScroll.scrollBy({ top, left: 0, behavior }) if (left !== 0 || left !== undefined) divScroll.scrollBy({ top: 0, left, behavior }) @@ -328,7 +328,7 @@ } } - function checkAutoScroll () { + function checkAutoScroll() { if (firstScroll && divHeight && divScroll) { scrollDown() firstScroll = false diff --git a/packages/ui/src/components/SearchEdit.svelte b/packages/ui/src/components/SearchEdit.svelte index ea36004b07..bd515bda0e 100644 --- a/packages/ui/src/components/SearchEdit.svelte +++ b/packages/ui/src/components/SearchEdit.svelte @@ -12,7 +12,7 @@ const dispatch = createEventDispatcher() let timer: any - function restartTimer (): void { + function restartTimer(): void { clearTimeout(timer) timer = setTimeout(() => { value = _search diff --git a/packages/ui/src/components/SearchInput.svelte b/packages/ui/src/components/SearchInput.svelte index a6ce7b0a27..5938bd07fc 100644 --- a/packages/ui/src/components/SearchInput.svelte +++ b/packages/ui/src/components/SearchInput.svelte @@ -40,7 +40,7 @@ const dispatch = createEventDispatcher() let timer: any - function restartTimer (): void { + function restartTimer(): void { clearTimeout(timer) timer = setTimeout(() => { value = _search diff --git a/packages/ui/src/components/SearchInputAdvanced.svelte b/packages/ui/src/components/SearchInputAdvanced.svelte index 27bee7591e..69a9806fd1 100644 --- a/packages/ui/src/components/SearchInputAdvanced.svelte +++ b/packages/ui/src/components/SearchInputAdvanced.svelte @@ -84,18 +84,18 @@ lastEmittedScope = scope } - function emit (): void { + function emit(): void { const raw = _search.trim() const encoded = encodeSearch(raw, scope) dispatch('change', { raw, encoded }) } - function restart (): void { + function restart(): void { clearTimeout(timer) timer = setTimeout(emit, delay) } - function clearSearch (): void { + function clearSearch(): void { _search = '' clearTimeout(timer) emit() diff --git a/packages/ui/src/components/SearchPicker.svelte b/packages/ui/src/components/SearchPicker.svelte index ec00394511..ce91ecb881 100644 --- a/packages/ui/src/components/SearchPicker.svelte +++ b/packages/ui/src/components/SearchPicker.svelte @@ -31,19 +31,19 @@ let inputRef: HTMLInputElement | undefined const itemsRef: Chip[] = [] - function handleBackspace (event: KeyboardEvent) { + function handleBackspace(event: KeyboardEvent) { if (event.key === 'Backspace' && value === '' && items.length > 0) { itemsRef[items.length - 1].focus() } dispatch('keydown', event) } - function handleItemRemove (id: string) { + function handleItemRemove(id: string) { dispatch('item-remove', id) inputRef?.focus() } - export function focus () { + export function focus() { inputRef?.focus() autoFocus = false } diff --git a/packages/ui/src/components/SelectPopup.svelte b/packages/ui/src/components/SelectPopup.svelte index 967babacaa..c5dde87dee 100644 --- a/packages/ui/src/components/SelectPopup.svelte +++ b/packages/ui/src/components/SelectPopup.svelte @@ -53,7 +53,7 @@ let selected: any - function sendSelect (id: SelectPopupValueType['id']): void { + function sendSelect(id: SelectPopupValueType['id']): void { selected = id if (onSelect) { onSelect(id) @@ -62,7 +62,7 @@ } } - export function onKeydown (key: KeyboardEvent): boolean { + export function onKeydown(key: KeyboardEvent): boolean { if (key.code === 'Tab') { dispatch('close') key.preventDefault() @@ -93,7 +93,7 @@ let itemLabelsTranslation: Map = new Map() - async function translateLabels (values: SelectPopupValueType[]): Promise { + async function translateLabels(values: SelectPopupValueType[]): Promise { const translateValue: (value: SelectPopupValueType) => Promise<[string, string] | null> = async (e) => { if (e.label === undefined) { return null diff --git a/packages/ui/src/components/Separator.svelte b/packages/ui/src/components/Separator.svelte index 498ffd9b73..b26ad9004b 100644 --- a/packages/ui/src/components/Separator.svelte +++ b/packages/ui/src/components/Separator.svelte @@ -300,7 +300,7 @@ return 0 } - function pointerMove (event: PointerEvent): void { + function pointerMove(event: PointerEvent): void { if (sState === SeparatorState.NORMAL) normalMouseMove(event) else if (sState === SeparatorState.FLOAT) floatMouseMove(event) } @@ -322,7 +322,7 @@ parentElement.style.pointerEvents = 'none' } - function floatMouseMove (event: PointerEvent): void { + function floatMouseMove(event: PointerEvent): void { if (!isSeparate || parentSize === null || parentElement === null) return const coord: number = Math.round(direction === 'horizontal' ? event.clientX - offset : event.clientY - offset) let parentCoord: number = coord - parentSize.start @@ -347,7 +347,7 @@ setSize(parentElement, newCoord) } - function normalMouseMove (event: PointerEvent): void { + function normalMouseMove(event: PointerEvent): void { if (!isSeparate || separatorMap === undefined || parentSize === null || separatorsSizes === null) return const coord: number = Math.round(direction === 'horizontal' ? event.clientX - offset : event.clientY - offset) let parentCoord: number = coord - parentSize.start @@ -430,13 +430,13 @@ if ($panelstore.panel?.refit !== undefined) $panelstore.panel.refit() } - function pointerUp (): void { + function pointerUp(): void { finalSeparation() enableUserSelect() document.removeEventListener('pointermove', pointerMove) document.removeEventListener('pointerup', pointerUp) } - function finalSeparation (): void { + function finalSeparation(): void { isSeparate = false if (sState === SeparatorState.NORMAL) { applyStyles(true) @@ -469,7 +469,7 @@ document.body.style.cursor = '' } - function pointerDown (event: PointerEvent): void { + function pointerDown(event: PointerEvent): void { if (checkFullWidth()) return event.preventDefault() disableUserSelect() @@ -477,7 +477,7 @@ document.addEventListener('pointermove', pointerMove) document.addEventListener('pointerup', pointerUp) } - function prepareSeparation (event: PointerEvent): void { + function prepareSeparation(event: PointerEvent): void { if (parentElement == null) return if (sState === SeparatorState.FLOAT && parentElement === null) { checkParent() diff --git a/packages/ui/src/components/StepsDialog.svelte b/packages/ui/src/components/StepsDialog.svelte index 7e368e59d6..1e1d681433 100644 --- a/packages/ui/src/components/StepsDialog.svelte +++ b/packages/ui/src/components/StepsDialog.svelte @@ -49,7 +49,7 @@ let isStepValid = false let isSaving = false - async function handleStepSelect (index: number) { + async function handleStepSelect(index: number) { const newStepIndex = index < steps.length ? Math.max(0, index) : Math.max(0, steps.length - 1) if (newStepIndex > currentStepIndex) { @@ -60,17 +60,17 @@ isStepValid = false } - function handleComponentChange (ev: CustomEvent<{ isValid?: boolean }>) { + function handleComponentChange(ev: CustomEvent<{ isValid?: boolean }>) { isStepValid = !!ev.detail.isValid } - async function handleDone () { + async function handleDone() { await completeCurrentStep() dispatch('close') } - async function completeCurrentStep () { + async function completeCurrentStep() { if (!step?.done) { return } @@ -124,8 +124,8 @@ on:click={isDone ? handleDone : async () => { - await handleStepSelect(currentStepIndex + 1) - }} + await handleStepSelect(currentStepIndex + 1) + }} /> @@ -162,8 +162,8 @@ on:click={disabled || selected ? undefined : async () => { - await handleStepSelect(index) - }} + await handleStepSelect(index) + }} >
{/if}
diff --git a/plugins/controlled-documents-resources/src/components/DocumentItem.svelte b/plugins/controlled-documents-resources/src/components/DocumentItem.svelte index a084757dd4..638d3ac520 100644 --- a/plugins/controlled-documents-resources/src/components/DocumentItem.svelte +++ b/plugins/controlled-documents-resources/src/components/DocumentItem.svelte @@ -9,7 +9,7 @@
- +
{value.title} diff --git a/plugins/controlled-documents-resources/src/components/DocumentMetaPresenter.svelte b/plugins/controlled-documents-resources/src/components/DocumentMetaPresenter.svelte index a3b0d9b13c..4aed2dbc28 100644 --- a/plugins/controlled-documents-resources/src/components/DocumentMetaPresenter.svelte +++ b/plugins/controlled-documents-resources/src/components/DocumentMetaPresenter.svelte @@ -52,7 +52,7 @@ {@const title = getDocumentName(lastDoc)}
- +
{title}
diff --git a/plugins/controlled-documents-resources/src/components/DocumentTemplates.svelte b/plugins/controlled-documents-resources/src/components/DocumentTemplates.svelte index 7f0ca45156..f7c495757f 100644 --- a/plugins/controlled-documents-resources/src/components/DocumentTemplates.svelte +++ b/plugins/controlled-documents-resources/src/components/DocumentTemplates.svelte @@ -41,7 +41,7 @@ $permissionsStore ) - function showCreateDialog (): void { + function showCreateDialog(): void { showPopup(documents.component.QmsTemplateWizard, { _class: documents.class.ControlledDocument }) } diff --git a/plugins/controlled-documents-resources/src/components/DocumentVersionsPopup.svelte b/plugins/controlled-documents-resources/src/components/DocumentVersionsPopup.svelte index a6c595e37f..01658a3e8a 100644 --- a/plugins/controlled-documents-resources/src/components/DocumentVersionsPopup.svelte +++ b/plugins/controlled-documents-resources/src/components/DocumentVersionsPopup.svelte @@ -41,7 +41,7 @@ } } - function navigateToVersion (doc: ControlledDocument): void { + function navigateToVersion(doc: ControlledDocument): void { const loc = getDocumentLink(doc) navigate(loc) dispatch('close') diff --git a/plugins/controlled-documents-resources/src/components/Documents.svelte b/plugins/controlled-documents-resources/src/components/Documents.svelte index 1e72214894..fae3bafb4a 100644 --- a/plugins/controlled-documents-resources/src/components/Documents.svelte +++ b/plugins/controlled-documents-resources/src/components/Documents.svelte @@ -42,7 +42,7 @@ {_class} {title} {icon} - adaptive={'doubleRow'} + adaptive="doubleRow" {modeSelectorProps} {query} bind:resultQuery diff --git a/plugins/controlled-documents-resources/src/components/EditDoc.svelte b/plugins/controlled-documents-resources/src/components/EditDoc.svelte index 0928235862..e4189fb886 100644 --- a/plugins/controlled-documents-resources/src/components/EditDoc.svelte +++ b/plugins/controlled-documents-resources/src/components/EditDoc.svelte @@ -31,7 +31,7 @@ $: void findProject(_id) - async function findProject (document: Ref): Promise { + async function findProject(document: Ref): Promise { if (_id === undefined) { project = undefined return diff --git a/plugins/controlled-documents-resources/src/components/EditDocPanel.svelte b/plugins/controlled-documents-resources/src/components/EditDocPanel.svelte index 8d692546e4..5f5708eee3 100644 --- a/plugins/controlled-documents-resources/src/components/EditDocPanel.svelte +++ b/plugins/controlled-documents-resources/src/components/EditDocPanel.svelte @@ -105,7 +105,7 @@ const notificationClient = getResource(notification.function.GetInboxNotificationsClient).then((res) => res()) $: read(_id) - function read (_id: Ref): void { + function read(_id: Ref): void { if (lastId !== _id) { const prev = lastId lastId = _id @@ -171,7 +171,7 @@ selectedTab = tabs.findIndex((tab) => tab.label === documentRes.string.ContentTab) } - function onSendDocRequest (requestClass: Ref>): void { + function onSendDocRequest(requestClass: Ref>): void { if ($controlledDocument == null) { return } @@ -190,7 +190,7 @@ showPopup(TeamPopup, teamPopupData, 'center') } - async function completeReviewRequest (ev: MouseEvent): Promise { + async function completeReviewRequest(ev: MouseEvent): Promise { showPopup( SignatureDialog, { confirmationTitle: documentRes.string.ConfirmReviewCompletion }, @@ -207,7 +207,7 @@ ) } - async function changeApprovalRequestState (ev: MouseEvent, isRejection: boolean): Promise { + async function changeApprovalRequestState(ev: MouseEvent, isRejection: boolean): Promise { showPopup(SignatureDialog, { isRejection }, eventToHTMLElement(ev), async (res) => { if (!res) return @@ -231,7 +231,7 @@ }) } - async function onCreateNewDraft (): Promise { + async function onCreateNewDraft(): Promise { if (creating) return creating = true @@ -274,7 +274,7 @@ } } - async function onEditDocument (): Promise { + async function onEditDocument(): Promise { if ($controlledDocument != null && $canCreateNewSnapshot && $isProjectEditable) { try { await createDocumentSnapshotAndEdit(client, $controlledDocument) @@ -287,7 +287,7 @@ } let titleElement: HTMLElement - function showVersions (): void { + function showVersions(): void { isTitlePressed = true showPopup(DocumentVersionsPopup, {}, titleElement, () => { isTitlePressed = false diff --git a/plugins/controlled-documents-resources/src/components/EditDocumentCategory.svelte b/plugins/controlled-documents-resources/src/components/EditDocumentCategory.svelte index d8ca00d938..8522481313 100644 --- a/plugins/controlled-documents-resources/src/components/EditDocumentCategory.svelte +++ b/plugins/controlled-documents-resources/src/components/EditDocumentCategory.svelte @@ -34,7 +34,7 @@ $: canEdit = !readonly && checkMyPermission(documents.permission.UpdateDocumentCategory, object.space, $permissionsStore) - async function saveField (ev: Event, val: string, field: string): Promise { + async function saveField(ev: Event, val: string, field: string): Promise { ev.preventDefault() if (object === undefined) { diff --git a/plugins/controlled-documents-resources/src/components/NewDocumentHeader.svelte b/plugins/controlled-documents-resources/src/components/NewDocumentHeader.svelte index ae38fef9fd..539edf1526 100644 --- a/plugins/controlled-documents-resources/src/components/NewDocumentHeader.svelte +++ b/plugins/controlled-documents-resources/src/components/NewDocumentHeader.svelte @@ -47,11 +47,11 @@ } } - function newDocument (): void { + function newDocument(): void { showPopup(documents.component.QmsDocumentWizard, { _class: documents.class.ControlledDocument }) } - function dropdownItemSelected (res?: SelectPopupValueType['id']): void { + function dropdownItemSelected(res?: SelectPopupValueType['id']): void { if (res == null) return if (res === documents.string.DocumentTemplate) { diff --git a/plugins/controlled-documents-resources/src/components/SignatureDialog.svelte b/plugins/controlled-documents-resources/src/components/SignatureDialog.svelte index 3806d7b4ae..108f069b06 100644 --- a/plugins/controlled-documents-resources/src/components/SignatureDialog.svelte +++ b/plugins/controlled-documents-resources/src/components/SignatureDialog.svelte @@ -68,7 +68,7 @@ let status = OK - async function submit (): Promise { + async function submit(): Promise { if (object.email === '' || object.password === '') { return } @@ -80,7 +80,7 @@ } } - async function validateAccount (email: string, password: string): Promise { + async function validateAccount(email: string, password: string): Promise { const accountClient = getAccountClient(accountsUrl) try { @@ -96,7 +96,7 @@ } } - async function validate (): Promise { + async function validate(): Promise { for (const field of Object.keys(object)) { const k = field as keyof LoginInfo if (object[k] === '') { @@ -125,7 +125,7 @@ on:close width="32rem" shadow={true} - className={'signature-dialog'} + className="signature-dialog" >
[] = isReviewRequest ? [] : (controlledDoc.externalApprovers ?? []) const existingExternalUsers = externalUsers - async function submit (): Promise { + async function submit(): Promise { const complete = async (): Promise => { loading = true diff --git a/plugins/controlled-documents-resources/src/components/category/popups/DeleteCategoryPopup.svelte b/plugins/controlled-documents-resources/src/components/category/popups/DeleteCategoryPopup.svelte index 6de358ba02..faa932ff8f 100644 --- a/plugins/controlled-documents-resources/src/components/category/popups/DeleteCategoryPopup.svelte +++ b/plugins/controlled-documents-resources/src/components/category/popups/DeleteCategoryPopup.svelte @@ -39,7 +39,7 @@ } $: void checkDeletePosibility(object) - async function checkDeletePosibility (category: DocumentCategory): Promise { + async function checkDeletePosibility(category: DocumentCategory): Promise { canDelete = await canDeleteDocumentCategory(category) } diff --git a/plugins/controlled-documents-resources/src/components/category/presenters/CategoryPresenter.svelte b/plugins/controlled-documents-resources/src/components/category/presenters/CategoryPresenter.svelte index a8332cebd6..1bc578f19e 100644 --- a/plugins/controlled-documents-resources/src/components/category/presenters/CategoryPresenter.svelte +++ b/plugins/controlled-documents-resources/src/components/category/presenters/CategoryPresenter.svelte @@ -48,7 +48,7 @@ use:tooltip={{ label: getEmbeddedLabel(category.title) }} >
- +
{category.code}
diff --git a/plugins/controlled-documents-resources/src/components/create-doc/CreateFolder.svelte b/plugins/controlled-documents-resources/src/components/create-doc/CreateFolder.svelte index 7ac4eb7de2..66431ce578 100644 --- a/plugins/controlled-documents-resources/src/components/create-doc/CreateFolder.svelte +++ b/plugins/controlled-documents-resources/src/components/create-doc/CreateFolder.svelte @@ -28,7 +28,7 @@ import view from '@hcengineering/view' import { createEventDispatcher } from 'svelte' - export function canClose (): boolean { + export function canClose(): boolean { return name === '' } @@ -44,11 +44,11 @@ $: canSave = getTitle(name).length > 0 && (folder !== undefined || space !== undefined) - function getTitle (value: string): string { + function getTitle(value: string): string { return value.trim() } - async function create (): Promise { + async function create(): Promise { const title = getTitle(name) if (title.length < 1) { return diff --git a/plugins/controlled-documents-resources/src/components/create-doc/QmsDocumentWizard.svelte b/plugins/controlled-documents-resources/src/components/create-doc/QmsDocumentWizard.svelte index 7e5eda3242..0959050b8f 100644 --- a/plugins/controlled-documents-resources/src/components/create-doc/QmsDocumentWizard.svelte +++ b/plugins/controlled-documents-resources/src/components/create-doc/QmsDocumentWizard.svelte @@ -129,11 +129,11 @@ let canProceed: false // Note: determined by individual steps const isLoading = false - function getStepComponent (step: DocumentWizardStep): AnySvelteComponent { + function getStepComponent(step: DocumentWizardStep): AnySvelteComponent { return stepComponents[step] } - function handleStepChanged (e: CustomEvent): void { + function handleStepChanged(e: CustomEvent): void { currentStepUpdated(e.detail) } @@ -141,7 +141,7 @@ let submitted = false - async function handleSubmit (): Promise { + async function handleSubmit(): Promise { if ($locationStep.space === undefined || $locationStep.project === undefined) { return } @@ -192,7 +192,7 @@ dispatch('close') } - async function handleClose (): Promise { + async function handleClose(): Promise { showPopup( MessageBox, { diff --git a/plugins/controlled-documents-resources/src/components/create-doc/QmsTemplateWizard.svelte b/plugins/controlled-documents-resources/src/components/create-doc/QmsTemplateWizard.svelte index 69e13bde40..b76192b2c6 100644 --- a/plugins/controlled-documents-resources/src/components/create-doc/QmsTemplateWizard.svelte +++ b/plugins/controlled-documents-resources/src/components/create-doc/QmsTemplateWizard.svelte @@ -124,17 +124,17 @@ let canProceed: false // Note: determined by individual steps const isLoading = false - function getCurrentStepComponent (currentStep: TemplateWizardStep): AnySvelteComponent { + function getCurrentStepComponent(currentStep: TemplateWizardStep): AnySvelteComponent { return stepComponents[currentStep] } - function handleStepChanged (e: CustomEvent): void { + function handleStepChanged(e: CustomEvent): void { currentStepUpdated(e.detail) } let submitted = false - async function handleSubmit (): Promise { + async function handleSubmit(): Promise { if ($locationStep.space === undefined || $locationStep.project === undefined) { return } @@ -196,7 +196,7 @@ $: space = $locationStep.space - async function handleClose (): Promise { + async function handleClose(): Promise { showPopup( MessageBox, { diff --git a/plugins/controlled-documents-resources/src/components/create-doc/steps/InfoStep.svelte b/plugins/controlled-documents-resources/src/components/create-doc/steps/InfoStep.svelte index 49346e40f9..a506e1d2a7 100644 --- a/plugins/controlled-documents-resources/src/components/create-doc/steps/InfoStep.svelte +++ b/plugins/controlled-documents-resources/src/components/create-doc/steps/InfoStep.svelte @@ -128,7 +128,7 @@ void setInitialCode() } - async function setInitialCode (): Promise { + async function setInitialCode(): Promise { let newCodeObj: Pick | undefined = undefined if (isTemplate) { @@ -157,7 +157,7 @@ } } - function isCodeUnique (code: string): boolean { + function isCodeUnique(code: string): boolean { return code !== '' && docCodes[code] === undefined } @@ -180,11 +180,11 @@ } ] - function handleSelectedReasonChanged (selected: 'newDoc' | 'custom'): void { + function handleSelectedReasonChanged(selected: 'newDoc' | 'custom'): void { infoStepUpdated({ ...$infoStep, selectedReason: selected }) } - function handleReasonUpdated (value: string): void { + function handleReasonUpdated(value: string): void { infoStepUpdated({ ...$infoStep, customReason: value }) } diff --git a/plugins/controlled-documents-resources/src/components/create-doc/steps/LocationStep.svelte b/plugins/controlled-documents-resources/src/components/create-doc/steps/LocationStep.svelte index 7dd94b7ffe..60cfb5e016 100644 --- a/plugins/controlled-documents-resources/src/components/create-doc/steps/LocationStep.svelte +++ b/plugins/controlled-documents-resources/src/components/create-doc/steps/LocationStep.svelte @@ -50,19 +50,19 @@ $: void selectProject(spaceRef) $: locationStepUpdated({ project: projectRef }) - async function selectProject (spaceRef: Ref | undefined): Promise { + async function selectProject(spaceRef: Ref | undefined): Promise { projectRef = spaceRef !== undefined ? await getLatestProjectId(spaceRef) : undefined } - async function fetchSpace (id: Ref | undefined): Promise { + async function fetchSpace(id: Ref | undefined): Promise { space = id === undefined ? undefined : await client.findOne(documents.class.DocumentSpace, { _id: id }) } - async function fetchSpaceType (id: Ref | undefined): Promise { + async function fetchSpaceType(id: Ref | undefined): Promise { spaceType = id === undefined ? undefined : await client.findOne(documents.class.DocumentSpaceType, { _id: id }, {}) } - function handleParentSelected (doc: Doc): void { + function handleParentSelected(doc: Doc): void { let parent: Ref | undefined if (hierarchy.isDerived(doc._class, documents.class.DocumentSpace)) { @@ -74,7 +74,7 @@ locationStepUpdated({ parent }) } - function handleProjectSelected (value: Ref | undefined): void { + function handleProjectSelected(value: Ref | undefined): void { projectRef = value } diff --git a/plugins/controlled-documents-resources/src/components/create-doc/steps/TeamStep.svelte b/plugins/controlled-documents-resources/src/components/create-doc/steps/TeamStep.svelte index 3dd4893d7d..3e2fe23ddf 100644 --- a/plugins/controlled-documents-resources/src/components/create-doc/steps/TeamStep.svelte +++ b/plugins/controlled-documents-resources/src/components/create-doc/steps/TeamStep.svelte @@ -23,7 +23,7 @@ export let space: Ref export let docObject: Data | undefined = undefined - async function handleUpdate ({ + async function handleUpdate({ detail }: { detail: { type: 'reviewers' | 'approvers' | 'coAuthors' | 'externalApprovers', users: Ref[] } diff --git a/plugins/controlled-documents-resources/src/components/create-doc/steps/TemplateStep.svelte b/plugins/controlled-documents-resources/src/components/create-doc/steps/TemplateStep.svelte index 7469efc2a3..097179877d 100644 --- a/plugins/controlled-documents-resources/src/components/create-doc/steps/TemplateStep.svelte +++ b/plugins/controlled-documents-resources/src/components/create-doc/steps/TemplateStep.svelte @@ -100,7 +100,7 @@ ) : [] - function handleExpanderToggled (id: Ref): void { + function handleExpanderToggled(id: Ref): void { const categories = { ...$templateStep.collapsedCategories } if (categories[id] === undefined) { @@ -113,7 +113,7 @@ templateStepUpdated({ ...$templateStep, collapsedCategories: categories }) } - function handleTemplateSelected (tmp: Ref, prefix: string, seqNumber: number): void { + function handleTemplateSelected(tmp: Ref, prefix: string, seqNumber: number): void { if (docObject === undefined) { return } diff --git a/plugins/controlled-documents-resources/src/components/docspace/CreateDocumentSpaceType.svelte b/plugins/controlled-documents-resources/src/components/docspace/CreateDocumentSpaceType.svelte index 4defe5394e..f8d8792cac 100644 --- a/plugins/controlled-documents-resources/src/components/docspace/CreateDocumentSpaceType.svelte +++ b/plugins/controlled-documents-resources/src/components/docspace/CreateDocumentSpaceType.svelte @@ -30,7 +30,7 @@ const dispatch = createEventDispatcher() - async function createType (): Promise { + async function createType(): Promise { if (docDescriptor === undefined) { return } diff --git a/plugins/controlled-documents-resources/src/components/docspace/CreateDocumentsSpace.svelte b/plugins/controlled-documents-resources/src/components/docspace/CreateDocumentsSpace.svelte index 52f47eaef8..d7c8fa48f4 100644 --- a/plugins/controlled-documents-resources/src/components/docspace/CreateDocumentsSpace.svelte +++ b/plugins/controlled-documents-resources/src/components/docspace/CreateDocumentsSpace.svelte @@ -64,12 +64,12 @@ let spaceType: WithLookup | undefined $: void loadSpaceType(typeId) - async function loadSpaceType (id: typeof typeId): Promise { + async function loadSpaceType(id: typeof typeId): Promise { spaceType = id !== undefined ? await client - .getModel() - .findOne(documents.class.DocumentSpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) + .getModel() + .findOne(documents.class.DocumentSpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) : undefined if (docSpace === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { @@ -81,7 +81,7 @@ $: descriptors = spaceType?.descriptor !== undefined ? [spaceType.descriptor] : [documents.descriptor.DocumentSpaceType] - function getRolesAssignment (): RolesAssignment { + function getRolesAssignment(): RolesAssignment { if (docSpace === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { return {} } @@ -95,7 +95,7 @@ }, {}) } - async function handleSave (): Promise { + async function handleSave(): Promise { if (isNew) { await createDocumentSpace() } else { @@ -103,7 +103,7 @@ } } - function getDocSpaceData (): Omit, 'type'> { + function getDocSpaceData(): Omit, 'type'> { return { name, description, @@ -114,7 +114,7 @@ } } - async function updateDocumentSpace (): Promise { + async function updateDocumentSpace(): Promise { if (docSpace === undefined || spaceType?.targetClass === undefined) { return } @@ -162,7 +162,7 @@ close() } - async function createDocumentSpace (): Promise { + async function createDocumentSpace(): Promise { if (typeId === undefined || spaceType?.targetClass === undefined) { return } @@ -178,24 +178,24 @@ close(docSpaceId) } - function close (id?: Ref): void { + function close(id?: Ref): void { dispatch('close', id) } - function handleTypeChange (evt: CustomEvent>): void { + function handleTypeChange(evt: CustomEvent>): void { typeId = evt.detail } $: roles = (spaceType?.$lookup?.roles ?? []) as Role[] - function handleOwnersChanged (newOwners: AccountUuid[]): void { + function handleOwnersChanged(newOwners: AccountUuid[]): void { owners = newOwners const newMembersSet = new Set([...members, ...newOwners]) members = Array.from(newMembersSet) } - function handleMembersChanged (newMembers: AccountUuid[]): void { + function handleMembersChanged(newMembers: AccountUuid[]): void { // If a member was removed we need to remove it from any roles assignments as well const newMembersSet = new Set(newMembers) const removedMembersSet = new Set(members.filter((m) => !newMembersSet.has(m))) @@ -209,7 +209,7 @@ members = newMembers } - function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): void { + function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): void { if (rolesAssignment === undefined) { rolesAssignment = {} } @@ -232,8 +232,8 @@ okAction={handleSave} {canSave} accentHeader - width={'medium'} - gap={'gapV-6'} + width="medium" + gap="gapV-6" onCancel={close} on:changeContent > @@ -259,7 +259,7 @@
- +
@@ -287,8 +287,8 @@ excludeItems={readOnlyGuestOwnerExcludeItems} label={core.string.Owners} onChange={handleOwnersChanged} - kind={'regular'} - size={'large'} + kind="regular" + size="large" />
@@ -309,8 +309,8 @@ value={members} label={documentsRes.string.Members} onChange={handleMembersChanged} - kind={'regular'} - size={'large'} + kind="regular" + size="large" allowGuests />
@@ -328,8 +328,8 @@ onChange={(refs) => { handleRoleAssignmentChanged(role._id, refs) }} - kind={'regular'} - size={'large'} + kind="regular" + size="large" />
{/each} diff --git a/plugins/controlled-documents-resources/src/components/document/DocTeam.svelte b/plugins/controlled-documents-resources/src/components/document/DocTeam.svelte index dc4c422736..fb4b1813b4 100644 --- a/plugins/controlled-documents-resources/src/components/document/DocTeam.svelte +++ b/plugins/controlled-documents-resources/src/components/document/DocTeam.svelte @@ -53,7 +53,7 @@ $permissionsStore ).filter((person) => person !== currentEmployee) as Ref[] - function handleUsersUpdated ( + function handleUsersUpdated( type: 'reviewers' | 'approvers' | 'coAuthors' | 'externalApprovers', users: Ref[] ): void { diff --git a/plugins/controlled-documents-resources/src/components/document/DocumentDiffViewer.svelte b/plugins/controlled-documents-resources/src/components/document/DocumentDiffViewer.svelte index cb1586a28d..e28635a424 100644 --- a/plugins/controlled-documents-resources/src/components/document/DocumentDiffViewer.svelte +++ b/plugins/controlled-documents-resources/src/components/document/DocumentDiffViewer.svelte @@ -43,7 +43,7 @@ } let translatedStates: Readonly> | null = null - function getTranslatedLabels (lang: string) { + function getTranslatedLabels(lang: string) { Promise.all([getTranslatedDocumentStates(lang), getTranslatedControlledDocStates(lang)]).then( ([states, controlledStates]) => { translatedStates = { @@ -54,7 +54,7 @@ ) } - function isDocument (document: Doc | null): document is Document { + function isDocument(document: Doc | null): document is Document { if (document == null) { return false } diff --git a/plugins/controlled-documents-resources/src/components/document/DocumentHistory.svelte b/plugins/controlled-documents-resources/src/components/document/DocumentHistory.svelte index df56618261..984623de7b 100644 --- a/plugins/controlled-documents-resources/src/components/document/DocumentHistory.svelte +++ b/plugins/controlled-documents-resources/src/components/document/DocumentHistory.svelte @@ -58,7 +58,7 @@ $: isExternalApprover = $controlledDocument?.externalApprovers?.includes(me) ?? false - function getDescription (cc: ChangeControl | undefined): string { + function getDescription(cc: ChangeControl | undefined): string { if (cc === undefined) { return '' } diff --git a/plugins/controlled-documents-resources/src/components/document/DocumentSignatories.svelte b/plugins/controlled-documents-resources/src/components/document/DocumentSignatories.svelte index 9b17244a54..bfb9754de3 100644 --- a/plugins/controlled-documents-resources/src/components/document/DocumentSignatories.svelte +++ b/plugins/controlled-documents-resources/src/components/document/DocumentSignatories.svelte @@ -68,7 +68,7 @@ } }) - function getNameByEmployeeId (id: Ref | undefined): string { + function getNameByEmployeeId(id: Ref | undefined): string { if (id === undefined) return '' const employee = $employeeByIdStore.get(id as Ref) @@ -77,7 +77,7 @@ return rawName !== undefined ? formatName(rawName) : '' } - function getSignerLabel (role: 'author' | 'reviewer' | 'approver'): IntlString { + function getSignerLabel(role: 'author' | 'reviewer' | 'approver'): IntlString { switch (role) { case 'author': return documentsRes.string.Author diff --git a/plugins/controlled-documents-resources/src/components/document/EditDocContent.svelte b/plugins/controlled-documents-resources/src/components/document/EditDocContent.svelte index 70a8bf41a0..b08f5537a7 100644 --- a/plugins/controlled-documents-resources/src/components/document/EditDocContent.svelte +++ b/plugins/controlled-documents-resources/src/components/document/EditDocContent.svelte @@ -84,7 +84,7 @@ $: commentUuids = $documentComments.map((p) => p.nodeId).filter((id) => id != null) - function handleRefreshHighlight (): void { + function handleRefreshHighlight(): void { textEditor?.commands()?.command(highlightUpdateCommand()) } @@ -140,12 +140,12 @@ } } - async function handleShowHeading (heading: Heading): Promise { + async function handleShowHeading(heading: Heading): Promise { const element = window.document.getElementById(heading.id) element?.scrollIntoView({ behavior: 'smooth', block: 'start' }) } - function handleNodeHighlight (id: string) { + function handleNodeHighlight(id: string) { if ($documentCommentHighlightedLocation) { const { nodeId } = $documentCommentHighlightedLocation if (nodeId === id) { @@ -160,12 +160,12 @@ return null } - function handleShowDocumentComments (nodeId: string): void { + function handleShowDocumentComments(nodeId: string): void { const element = getNodeElement(editor, nodeId) documentCommentsDisplayRequested({ element, nodeId }) } - async function createEmbedding (file: File): Promise<{ file: Ref, type: string } | undefined> { + async function createEmbedding(file: File): Promise<{ file: Ref, type: string } | undefined> { if ($controlledDocument === undefined || $controlledDocument === null) { return undefined } @@ -227,7 +227,7 @@ } ) - function isDeleted (att: Attachment): boolean { + function isDeleted(att: Attachment): boolean { if (!hierarchy.hasMixin(att, documents.mixin.DocumentAttachment)) return false return hierarchy.as(att, documents.mixin.DocumentAttachment).deletedIn != null } @@ -241,11 +241,11 @@ let inputFile: HTMLInputElement - export function handleAttach (): void { + export function handleAttach(): void { inputFile.click() } - async function fileSelected (): Promise { + async function fileSelected(): Promise { if (!$isEditable) return const list = inputFile.files @@ -261,7 +261,7 @@ progress = false } - function handleTable (element: HTMLElement, editorHandler: TextEditorHandler, event?: MouseEvent): void { + function handleTable(element: HTMLElement, editorHandler: TextEditorHandler, event?: MouseEvent): void { const position = event !== undefined ? getEventPositionElement(event) : getPopupPositionElement(element) addTableHandler(editorHandler.insertTable, position) } @@ -269,18 +269,18 @@ $: refActions = !$isEditable ? [] : defaultRefActions - .concat([ - { label: textEditorPlugin.string.Attach, icon: AttachIcon, action: handleAttach, order: 1001 }, - { label: textEditorPlugin.string.Table, icon: TableIcon, action: handleTable, order: 1500 } - ]) - .sort((a, b) => a.order - b.order) + .concat([ + { label: textEditorPlugin.string.Attach, icon: AttachIcon, action: handleAttach, order: 1001 }, + { label: textEditorPlugin.string.Table, icon: TableIcon, action: handleTable, order: 1500 } + ]) + .sort((a, b) => a.order - b.order) - function getState (att: Attachment): DocumentAttachmentState | undefined { + function getState(att: Attachment): DocumentAttachmentState | undefined { if (!hierarchy.hasMixin(att, documents.mixin.DocumentAttachment)) return undefined return hierarchy.as(att, documents.mixin.DocumentAttachment).state } - async function removeAttachment (att: Attachment): Promise { + async function removeAttachment(att: Attachment): Promise { if ($controlledDocument == null) return // 'new' attachments (added in this version) are removed physically, no soft-delete trace @@ -297,7 +297,7 @@ textEditor?.removeAttachment(att.file) } - async function restoreAttachment (att: Attachment): Promise { + async function restoreAttachment(att: Attachment): Promise { await client.updateMixin(att._id, att._class, att.space, documents.mixin.DocumentAttachment, { deletedIn: null }) diff --git a/plugins/controlled-documents-resources/src/components/document/EditDocReasonAndImpact.svelte b/plugins/controlled-documents-resources/src/components/document/EditDocReasonAndImpact.svelte index eb0a593698..7edc0ae020 100644 --- a/plugins/controlled-documents-resources/src/components/document/EditDocReasonAndImpact.svelte +++ b/plugins/controlled-documents-resources/src/components/document/EditDocReasonAndImpact.svelte @@ -40,7 +40,7 @@ docSpaces = res.map((s) => s._id) }) - async function handleFieldUpdated (field: keyof ChangeControl, ev: UIEvent): Promise { + async function handleFieldUpdated(field: keyof ChangeControl, ev: UIEvent): Promise { if (ev == null) { return } diff --git a/plugins/controlled-documents-resources/src/components/document/EditDocRelease.svelte b/plugins/controlled-documents-resources/src/components/document/EditDocRelease.svelte index fabe6acc65..7e15b5e9ed 100644 --- a/plugins/controlled-documents-resources/src/components/document/EditDocRelease.svelte +++ b/plugins/controlled-documents-resources/src/components/document/EditDocRelease.svelte @@ -97,7 +97,7 @@ let selectedReviewInterval = $controlledDocument?.reviewInterval ? $controlledDocument.reviewInterval.toString() : DEFAULT_PERIODIC_REVIEW_INTERVAL.toString() - async function changePeriodicReviewInterval (interval?: string) { + async function changePeriodicReviewInterval(interval?: string) { if ($controlledDocument == null || interval == null) { return } @@ -116,7 +116,7 @@ const hierarchy = client.getHierarchy() const documentTrainingClass = getDocumentTrainingClass(hierarchy) - async function toggleTraining (on: boolean): Promise { + async function toggleTraining(on: boolean): Promise { if (!$controlledDocument || !canEdit) { return } @@ -139,7 +139,7 @@ } } - async function updateTraining (update: MixinUpdate): Promise { + async function updateTraining(update: MixinUpdate): Promise { if (!$controlledDocument || !canEdit || !documentTraining) { return false } @@ -149,7 +149,7 @@ $: severity = getSeverity($controlledDocument, $documentAllVersionsDescSorted) - function getPreviousDocument ( + function getPreviousDocument( document: ControlledDocument, allVersionsDesc: ControlledDocument[] ): ControlledDocument | undefined { @@ -158,7 +158,7 @@ ) } - function getSeverity (document: ControlledDocument | null, allVersionsDesc: ControlledDocument[]): Severity { + function getSeverity(document: ControlledDocument | null, allVersionsDesc: ControlledDocument[]): Severity { if (document == null) { return Severity.Minor } @@ -172,7 +172,7 @@ } } - function getVersionForSeverity (severity: Severity): { major: number, minor: number } | undefined { + function getVersionForSeverity(severity: Severity): { major: number, minor: number } | undefined { if ($controlledDocument == null) { return } @@ -192,7 +192,7 @@ } } - async function handleSeverityChanged (newSeverity: Severity): Promise { + async function handleSeverityChanged(newSeverity: Severity): Promise { if (!canEdit || $controlledDocument == null) { return } diff --git a/plugins/controlled-documents-resources/src/components/document/EditDocTeam.svelte b/plugins/controlled-documents-resources/src/components/document/EditDocTeam.svelte index 9bc280dae7..c1e860e6ce 100644 --- a/plugins/controlled-documents-resources/src/components/document/EditDocTeam.svelte +++ b/plugins/controlled-documents-resources/src/components/document/EditDocTeam.svelte @@ -53,7 +53,7 @@ const client = getClient() - async function handleUpdate ({ + async function handleUpdate({ detail }: { detail: { type: 'reviewers' | 'approvers' | 'externalApprovers', users: Ref[] } diff --git a/plugins/controlled-documents-resources/src/components/document/popups/AddCommentPopup.svelte b/plugins/controlled-documents-resources/src/components/document/popups/AddCommentPopup.svelte index f46b22e0ce..5851f01e1c 100644 --- a/plugins/controlled-documents-resources/src/components/document/popups/AddCommentPopup.svelte +++ b/plugins/controlled-documents-resources/src/components/document/popups/AddCommentPopup.svelte @@ -13,7 +13,7 @@ const dispatch = createEventDispatcher() - async function handleMessage (event: CustomEvent): Promise { + async function handleMessage(event: CustomEvent): Promise { const messageId: Ref = generateId() const comment = await addDocumentCommentFx({ content: event.detail, messageId, nodeId }) @@ -22,7 +22,7 @@ let popup: HTMLDivElement | undefined - function isClickInsidePopup (target: Node): boolean { + function isClickInsidePopup(target: Node): boolean { if (popup !== undefined && popup.contains(target)) return true if (!(target instanceof Element)) return false @@ -32,7 +32,7 @@ return false } - function handleClick (event: MouseEvent): void { + function handleClick(event: MouseEvent): void { if (event.target instanceof Node) { const top = $popups.length > 0 && $popups[$popups.length - 1].id === popupId if (top && !isClickInsidePopup(event.target)) { diff --git a/plugins/controlled-documents-resources/src/components/document/popups/ChangeCategoryPopup.svelte b/plugins/controlled-documents-resources/src/components/document/popups/ChangeCategoryPopup.svelte index f8037f9467..9f7cf88530 100644 --- a/plugins/controlled-documents-resources/src/components/document/popups/ChangeCategoryPopup.svelte +++ b/plugins/controlled-documents-resources/src/components/document/popups/ChangeCategoryPopup.svelte @@ -33,7 +33,7 @@ categories = res }) - async function handleSubmit (category: Ref): Promise { + async function handleSubmit(category: Ref): Promise { await client.update(object, { category }) dispatch('close') } diff --git a/plugins/controlled-documents-resources/src/components/document/popups/ChangeDocCodePopup.svelte b/plugins/controlled-documents-resources/src/components/document/popups/ChangeDocCodePopup.svelte index 5ad51dbcce..d3d7c15688 100644 --- a/plugins/controlled-documents-resources/src/components/document/popups/ChangeDocCodePopup.svelte +++ b/plugins/controlled-documents-resources/src/components/document/popups/ChangeDocCodePopup.svelte @@ -53,7 +53,7 @@ $: isSame = object.code === code $: canSubmit = isFilled && isUnique && !isSame - async function handleSubmit (): Promise { + async function handleSubmit(): Promise { if (!canSubmit) { return } diff --git a/plugins/controlled-documents-resources/src/components/document/popups/ChangeDocPrefixPopup.svelte b/plugins/controlled-documents-resources/src/components/document/popups/ChangeDocPrefixPopup.svelte index 032eba39de..70da92bd36 100644 --- a/plugins/controlled-documents-resources/src/components/document/popups/ChangeDocPrefixPopup.svelte +++ b/plugins/controlled-documents-resources/src/components/document/popups/ChangeDocPrefixPopup.svelte @@ -61,7 +61,7 @@ $: isSame = object.docPrefix === prefix $: canSubmit = isFilled && isUnique && !isSame - async function handleSubmit (): Promise { + async function handleSubmit(): Promise { if (!canSubmit) { return } diff --git a/plugins/controlled-documents-resources/src/components/document/popups/CommentFilterSettingsPopup.svelte b/plugins/controlled-documents-resources/src/components/document/popups/CommentFilterSettingsPopup.svelte index 3821167c17..4643c866a8 100644 --- a/plugins/controlled-documents-resources/src/components/document/popups/CommentFilterSettingsPopup.svelte +++ b/plugins/controlled-documents-resources/src/components/document/popups/CommentFilterSettingsPopup.svelte @@ -56,8 +56,8 @@
{ + async function transfer(): Promise { if (request !== undefined) { await transferDocuments(client, request) dispatch('close') @@ -97,20 +97,20 @@ canTransfer = false } - async function selectProject (spaceRef: Ref | undefined): Promise { + async function selectProject(spaceRef: Ref | undefined): Promise { targetProjectId = spaceRef !== undefined ? await getLatestProjectId(spaceRef) : undefined } - async function fetchSpace (id: Ref | undefined): Promise { + async function fetchSpace(id: Ref | undefined): Promise { targetSpace = id === undefined ? undefined : await client.findOne(documents.class.DocumentSpace, { _id: id }) } - async function fetchSpaceType (id: Ref | undefined): Promise { + async function fetchSpaceType(id: Ref | undefined): Promise { targetSpaceType = id === undefined ? undefined : await client.findOne(documents.class.DocumentSpaceType, { _id: id }, {}) } - async function handleParentSelected (doc: Doc): Promise { + async function handleParentSelected(doc: Doc): Promise { if (hierarchy.isDerived(doc._class, documents.class.DocumentSpace)) { targetParentDocumentId = undefined targetParentId = undefined @@ -122,14 +122,14 @@ } } - function handleProjectSelected (value: Ref | undefined): void { + function handleProjectSelected(value: Ref | undefined): void { targetProjectId = value } let haveTemplateObjects: boolean = false $: void checkForTemplateObjects(affectedDocs) - async function checkForTemplateObjects (docs: DocumentMeta[]): Promise { + async function checkForTemplateObjects(docs: DocumentMeta[]): Promise { const cdocs = await client.findAll(documents.class.ControlledDocument, { attachedTo: { $in: docs.map((d) => d._id) } }) @@ -175,8 +175,8 @@ { diff --git a/plugins/controlled-documents-resources/src/components/document/presenters/CategoryPresenter.svelte b/plugins/controlled-documents-resources/src/components/document/presenters/CategoryPresenter.svelte index 920f17d156..ae0220e425 100644 --- a/plugins/controlled-documents-resources/src/components/document/presenters/CategoryPresenter.svelte +++ b/plugins/controlled-documents-resources/src/components/document/presenters/CategoryPresenter.svelte @@ -21,7 +21,7 @@ }) } - function handleClick (event: MouseEvent): void { + function handleClick(event: MouseEvent): void { if (!editable) { return } diff --git a/plugins/controlled-documents-resources/src/components/document/presenters/DocumentPrefixPresenter.svelte b/plugins/controlled-documents-resources/src/components/document/presenters/DocumentPrefixPresenter.svelte index be1b0011eb..54ff64d89c 100644 --- a/plugins/controlled-documents-resources/src/components/document/presenters/DocumentPrefixPresenter.svelte +++ b/plugins/controlled-documents-resources/src/components/document/presenters/DocumentPrefixPresenter.svelte @@ -23,7 +23,7 @@ export let value: DocumentTemplate export let editable: boolean = false - function handleClick (event: MouseEvent): void { + function handleClick(event: MouseEvent): void { if (!editable) { return } diff --git a/plugins/controlled-documents-resources/src/components/document/presenters/DocumentPresenter.svelte b/plugins/controlled-documents-resources/src/components/document/presenters/DocumentPresenter.svelte index d875c2e6a9..68486a159a 100644 --- a/plugins/controlled-documents-resources/src/components/document/presenters/DocumentPresenter.svelte +++ b/plugins/controlled-documents-resources/src/components/document/presenters/DocumentPresenter.svelte @@ -39,7 +39,7 @@ const dispatch = createEventDispatcher() - function handleClick (event: MouseEvent): void { + function handleClick(event: MouseEvent): void { if (!canEdit) { return } diff --git a/plugins/controlled-documents-resources/src/components/document/presenters/OwnerPresenter.svelte b/plugins/controlled-documents-resources/src/components/document/presenters/OwnerPresenter.svelte index a78894f6bc..a842a9d839 100644 --- a/plugins/controlled-documents-resources/src/components/document/presenters/OwnerPresenter.svelte +++ b/plugins/controlled-documents-resources/src/components/document/presenters/OwnerPresenter.svelte @@ -70,7 +70,7 @@ {defaultName} value={_id ?? value?._id} disabled={!canChangeOwner} - avatarSize={'x-small'} + avatarSize="x-small" shouldShowPlaceholder={true} shouldShowName={shouldShowLabel} tooltipLabels={{ personLabel: document.string.AssignedTo, placeholderLabel: document.string.Unassigned }} diff --git a/plugins/controlled-documents-resources/src/components/document/presenters/StatePresenter.svelte b/plugins/controlled-documents-resources/src/components/document/presenters/StatePresenter.svelte index eeb53b4970..88d31cdc1c 100644 --- a/plugins/controlled-documents-resources/src/components/document/presenters/StatePresenter.svelte +++ b/plugins/controlled-documents-resources/src/components/document/presenters/StatePresenter.svelte @@ -29,7 +29,7 @@ let docStates: TranslatedDocumentStates | undefined let controlledDocStates: TranslatedControlledDocStates | undefined - async function getTranslatedLabels (lang: string) { + async function getTranslatedLabels(lang: string) { docStates = await getTranslatedDocumentStates(lang) controlledDocStates = await getTranslatedControlledDocStates(lang) } diff --git a/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentApprovalGuideItem.svelte b/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentApprovalGuideItem.svelte index 75f66fb04c..f8e268ef47 100644 --- a/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentApprovalGuideItem.svelte +++ b/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentApprovalGuideItem.svelte @@ -10,7 +10,7 @@ import documentsRes from '../../../plugin' import { TeamPopupData } from '../../../utils' - function onSendDocRequest (): void { + function onSendDocRequest(): void { if ($controlledDocument == null) { return } diff --git a/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentApprovalItem.svelte b/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentApprovalItem.svelte index 077b704d47..90a9ff19da 100644 --- a/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentApprovalItem.svelte +++ b/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentApprovalItem.svelte @@ -49,7 +49,7 @@ • {dtf.format(state?.modifiedOn)}
- +
@@ -74,9 +74,9 @@ > {#if approval.state === 'approved'} - + {:else if approval.state === 'rejected'} - + {:else if approval.state === 'cancelled'} {:else if approval.state === 'waiting'} diff --git a/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentCommentThread.svelte b/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentCommentThread.svelte index 538667bafb..93b8b067b2 100644 --- a/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentCommentThread.svelte +++ b/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentCommentThread.svelte @@ -24,7 +24,7 @@ } $: resolved = isResolved(value) - function isResolved (val: DocumentComment | undefined): boolean { + function isResolved(val: DocumentComment | undefined): boolean { return val?.resolved !== undefined && val.resolved } diff --git a/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentInfoTab.svelte b/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentInfoTab.svelte index 34a3973f73..2dedc79623 100644 --- a/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentInfoTab.svelte +++ b/plugins/controlled-documents-resources/src/components/document/right-panel/DocumentInfoTab.svelte @@ -47,7 +47,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function handleCodeEdit (event: MouseEvent): void { + function handleCodeEdit(event: MouseEvent): void { event?.preventDefault() event?.stopPropagation() @@ -60,7 +60,7 @@ ) } - function handleCategoryEdit (event: MouseEvent): void { + function handleCategoryEdit(event: MouseEvent): void { event?.preventDefault() event?.stopPropagation() diff --git a/plugins/controlled-documents-resources/src/components/document/right-panel/info/DocumentFlatTreeElement.svelte b/plugins/controlled-documents-resources/src/components/document/right-panel/info/DocumentFlatTreeElement.svelte index 85bf78e8ad..88cc139bf9 100644 --- a/plugins/controlled-documents-resources/src/components/document/right-panel/info/DocumentFlatTreeElement.svelte +++ b/plugins/controlled-documents-resources/src/components/document/right-panel/info/DocumentFlatTreeElement.svelte @@ -52,7 +52,7 @@ iconProps={{ fill: 'currentColor' }} - size={'small'} + size="small" />
{/if} diff --git a/plugins/controlled-documents-resources/src/components/hierarchy/DocHierarchyLevel.svelte b/plugins/controlled-documents-resources/src/components/hierarchy/DocHierarchyLevel.svelte index 3d2f0c1e37..cf1b26642d 100644 --- a/plugins/controlled-documents-resources/src/components/hierarchy/DocHierarchyLevel.svelte +++ b/plugins/controlled-documents-resources/src/components/hierarchy/DocHierarchyLevel.svelte @@ -48,7 +48,7 @@ const dispatch = createEventDispatcher() - async function getDocMoreActions (obj: Doc): Promise { + async function getDocMoreActions(obj: Doc): Promise { return getMoreActions !== undefined ? await getMoreActions(obj) : [] } diff --git a/plugins/controlled-documents-resources/src/components/hierarchy/DocumentParentSelector.svelte b/plugins/controlled-documents-resources/src/components/hierarchy/DocumentParentSelector.svelte index 54ef4e6105..04aef18cac 100644 --- a/plugins/controlled-documents-resources/src/components/hierarchy/DocumentParentSelector.svelte +++ b/plugins/controlled-documents-resources/src/components/hierarchy/DocumentParentSelector.svelte @@ -54,7 +54,7 @@ selected={selected === undefined} empty={root.length === 0} {collapsedPrefix} - type={'nested-selectable'} + type="nested-selectable" on:click={() => { dispatch('selected', space) }} diff --git a/plugins/controlled-documents-resources/src/components/hierarchy/DocumentSpacePresenter.svelte b/plugins/controlled-documents-resources/src/components/hierarchy/DocumentSpacePresenter.svelte index 6fea79ff2c..0ab7daafc1 100644 --- a/plugins/controlled-documents-resources/src/components/hierarchy/DocumentSpacePresenter.svelte +++ b/plugins/controlled-documents-resources/src/components/hierarchy/DocumentSpacePresenter.svelte @@ -64,7 +64,7 @@ export let currentFragment: string | undefined export let getActions: (space: Space) => Promise = async () => [] export let deselect: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false const client = getClient() @@ -121,18 +121,18 @@ selectedControlledDoc = undefined } - async function selectProject (space: DocumentSpace): Promise { + async function selectProject(space: DocumentSpace): Promise { project = (await getLatestProjectId(space._id, true)) ?? documents.ids.NoProject } - function handleDocumentSelected (doc: WithLookup): void { + function handleDocumentSelected(doc: WithLookup): void { if (doc.$lookup?.document !== undefined) { const loc = getProjectDocumentLink(doc.$lookup?.document, doc.project) navigate(loc) } } - async function getSpaceActions (space: DocumentSpace): Promise { + async function getSpaceActions(space: DocumentSpace): Promise { const actions = await getActions(space) if ( @@ -168,7 +168,7 @@ return orderActions(actions) } - async function getDocumentActions (obj: Doc): Promise { + async function getDocumentActions(obj: Doc): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, obj) for (const act of extraActions) { @@ -186,7 +186,7 @@ return orderActions(result) } - function orderActions (actions: Action[]): Action[] { + function orderActions(actions: Action[]): Action[] { const order: Record = { create: 1, edit: 2, @@ -209,14 +209,14 @@ let draggedOverTop: number = 0 let cannotDropTo: Ref[] = [] - function canDrop (object: Ref, target: Ref): boolean { + function canDrop(object: Ref, target: Ref): boolean { if (object === target) return false if (cannotDropTo.includes(target)) return false return true } - function onDragStart (event: DragEvent, object: Ref): void { + function onDragStart(event: DragEvent, object: Ref): void { // no prevent default to leverage default rendering // event.preventDefault() if (event.dataTransfer === null || event.target === null) { @@ -232,7 +232,7 @@ closeTooltip() } - function getDropPosition (event: DragEvent): { pos: 'before' | 'after' | undefined, top: number } { + function getDropPosition(event: DragEvent): { pos: 'before' | 'after' | undefined, top: number } { const parentRect = parent.getBoundingClientRect() const targetRect = (event.target as HTMLElement).getBoundingClientRect() const dropPosition = event.clientY - targetRect.top @@ -246,7 +246,7 @@ return { pos, top } } - function onDragOver (event: DragEvent, object: Ref): void { + function onDragOver(event: DragEvent, object: Ref): void { event.preventDefault() // this is an ugly solution to control drop effect // we drag and drop elements that are in the depth of components hierarchy @@ -268,14 +268,14 @@ } } - function onDragEnd (event: DragEvent): void { + function onDragEnd(event: DragEvent): void { event.preventDefault() draggedItem = undefined draggedOver = undefined draggedOverPos = undefined } - function onDrop (event: DragEvent, object: Ref): void { + function onDrop(event: DragEvent, object: Ref): void { event.preventDefault() if (event.dataTransfer === null) { return @@ -321,11 +321,11 @@ }} title={space.name} highlighted={space._id === currentSpace && currentFragment !== undefined && !deselect} - visible={(space._id === currentSpace && currentFragment !== undefined && !deselect) || forciblyСollapsed} + visible={(space._id === currentSpace && currentFragment !== undefined && !deselect) || forciblyCollapsed} showMenu={pressed} - {forciblyСollapsed} + {forciblyCollapsed} actions={() => getSpaceActions(space)} - type={'nested'} + type="nested" draggable on:drop={(evt) => { onDrop(evt, documents.ids.NoParent) @@ -342,9 +342,9 @@ { @@ -379,7 +379,7 @@ {/if} - {#if (selected || forciblyСollapsed) && selectedControlledDoc} + {#if (selected || forciblyCollapsed) && selectedControlledDoc} {@const doc = selectedControlledDoc} {/if} diff --git a/plugins/controlled-documents-resources/src/components/print/DocumentTemplateHeader.svelte b/plugins/controlled-documents-resources/src/components/print/DocumentTemplateHeader.svelte index aa240b4bf3..f572936667 100644 --- a/plugins/controlled-documents-resources/src/components/print/DocumentTemplateHeader.svelte +++ b/plugins/controlled-documents-resources/src/components/print/DocumentTemplateHeader.svelte @@ -34,7 +34,7 @@ } }) - async function fetchIconAsDataUrl (iconRef: Ref): Promise { + async function fetchIconAsDataUrl(iconRef: Ref): Promise { try { const url = getPreviewThumbnail(iconRef, logoSize, logoSize, 1) const response = await fetch(url) @@ -91,7 +91,7 @@
{#if iconDataUrl} - {''} + {/if} {workspace} diff --git a/plugins/controlled-documents-resources/src/components/project/ProjectSelector.svelte b/plugins/controlled-documents-resources/src/components/project/ProjectSelector.svelte index d83765ba04..e7d5fbf69c 100644 --- a/plugins/controlled-documents-resources/src/components/project/ProjectSelector.svelte +++ b/plugins/controlled-documents-resources/src/components/project/ProjectSelector.svelte @@ -46,7 +46,7 @@ ;[project] = res }) - function showVersionsPopup (): void { + function showVersionsPopup(): void { if (disabled) return pressed = true diff --git a/plugins/controlled-documents-resources/src/components/project/ProjectSelectorPopup.svelte b/plugins/controlled-documents-resources/src/components/project/ProjectSelectorPopup.svelte index 0eb68534c0..88de80f2f9 100644 --- a/plugins/controlled-documents-resources/src/components/project/ProjectSelectorPopup.svelte +++ b/plugins/controlled-documents-resources/src/components/project/ProjectSelectorPopup.svelte @@ -48,7 +48,7 @@ } ) - function selectProject (project: Ref): void { + function selectProject(project: Ref): void { dispatch('close', project) } @@ -59,12 +59,12 @@
- + {#each projects as project} { + async function getObject(value: Request): Promise { const attachedToClass = value.attachedToClass object = await client.findOne(attachedToClass, { _id: value.attachedTo }) } diff --git a/plugins/controlled-documents-resources/src/docTableFormatter.ts b/plugins/controlled-documents-resources/src/docTableFormatter.ts index 19bc1feefe..a266dad568 100644 --- a/plugins/controlled-documents-resources/src/docTableFormatter.ts +++ b/plugins/controlled-documents-resources/src/docTableFormatter.ts @@ -104,9 +104,7 @@ export async function formatControlledDocumentValue ( // Translate label to determine which field to extract let labelText = '' if (typeof attr.label === 'string') { - labelText = isIntlString(attr.label) - ? await translate(attr.label as unknown as IntlString, {}, language) - : attr.label + labelText = isIntlString(attr.label) ? await translate(attr.label, {}, language) : attr.label } else { labelText = await translate(attr.label, {}, language) } @@ -210,9 +208,7 @@ export async function formatControlledDocumentValue ( // Translate label to determine which field to extract for template let labelText = '' if (typeof attr.label === 'string') { - labelText = isIntlString(attr.label) - ? await translate(attr.label as unknown as IntlString, {}, language) - : attr.label + labelText = isIntlString(attr.label) ? await translate(attr.label, {}, language) : attr.label } else { labelText = await translate(attr.label, {}, language) } diff --git a/plugins/controlled-documents-resources/src/plugin.ts b/plugins/controlled-documents-resources/src/plugin.ts index b31480831c..467ebe2650 100644 --- a/plugins/controlled-documents-resources/src/plugin.ts +++ b/plugins/controlled-documents-resources/src/plugin.ts @@ -260,7 +260,7 @@ export default mergeIds(documentsId, documents, { ControlledDocumentTitleProvider: '' as Resource<(client: Client, ref: Ref, doc?: Doc) => Promise>, DocumentMetaTitleProvider: '' as Resource<(client: Client, ref: Ref, doc?: Doc) => Promise>, DocumentMetaReferenceVersionsProvider: '' as Resource< - (client: Client, ref: Ref, doc?: Doc) => Promise + (client: Client, ref: Ref, doc?: Doc) => Promise > } }) diff --git a/plugins/controlled-documents-resources/src/stores/editors/document.ts b/plugins/controlled-documents-resources/src/stores/editors/document.ts index d33ff22c2e..2bf2cc46df 100644 --- a/plugins/controlled-documents-resources/src/stores/editors/document.ts +++ b/plugins/controlled-documents-resources/src/stores/editors/document.ts @@ -41,7 +41,7 @@ export * from './document/canSendForReview' export * from './document/documentComments' export * from './document/comparison' export * from './document/editor' -export * from './document/query' +export type * from './document/query' export const addDocumentCommentFx = attach({ source: { document: $controlledDocument }, diff --git a/plugins/controlled-documents-resources/src/utils.ts b/plugins/controlled-documents-resources/src/utils.ts index d7cc3609d1..9f6883049e 100644 --- a/plugins/controlled-documents-resources/src/utils.ts +++ b/plugins/controlled-documents-resources/src/utils.ts @@ -353,11 +353,11 @@ export async function updateExternalApproversAccess ( removedPersons.length === 0 ? [] : await client.findAll(core.class.Collaborator, { - attachedTo: controlledDoc._id, - attachedToClass: controlledDoc._class, - collection: 'collaborators', - collaborator: { $in: removedPersonUuids } - }) + attachedTo: controlledDoc._id, + attachedToClass: controlledDoc._class, + collection: 'collaborators', + collaborator: { $in: removedPersonUuids } + }) const projectDocs = await client.findAll(documents.class.ProjectDocument, { document: controlledDoc._id }) @@ -501,9 +501,7 @@ export async function rejectRequest ( }) } -export type ControlledStatesTags = { - [K in ControlledDocumentState]: DocumentStateTagType -} +export type ControlledStatesTags = Record export const controlledStatesTags: ControlledStatesTags = { [ControlledDocumentState.InReview]: 'inProgress', @@ -514,9 +512,7 @@ export const controlledStatesTags: ControlledStatesTags = { [ControlledDocumentState.ToReview]: 'effective' } -export type StatesTags = { - [K in DocumentState]: DocumentStateTagType -} +export type StatesTags = Record export const statesTags: StatesTags = { [DocumentState.Draft]: 'draft', diff --git a/plugins/controlled-documents/.eslintrc.js b/plugins/controlled-documents/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/controlled-documents/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/controlled-documents/eslint.config.mjs b/plugins/controlled-documents/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/controlled-documents/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/controlled-documents/package.json b/plugins/controlled-documents/package.json index 9d6c360319..ed6cb622ba 100644 --- a/plugins/controlled-documents/package.json +++ b/plugins/controlled-documents/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/controlled-documents/src/docutils.ts b/plugins/controlled-documents/src/docutils.ts index ecdca27339..1e335e09bb 100644 --- a/plugins/controlled-documents/src/docutils.ts +++ b/plugins/controlled-documents/src/docutils.ts @@ -206,11 +206,11 @@ export async function createControlledDocMetadata ( specTitle: string, metaId?: Ref ): Promise<{ - success: boolean - seqNumber: number - documentMetaId: Ref - projectDocumentId: Ref - }> { + success: boolean + seqNumber: number + documentMetaId: Ref + projectDocumentId: Ref +}> { const projectId = project ?? documents.ids.NoProject const ops = client.apply('create-qms-document') @@ -370,12 +370,12 @@ export async function createDocumentTemplateMetadata ( specTitle: string, metaId?: Ref ): Promise<{ - success: boolean - seqNumber: number - code: string - documentMetaId: Ref - projectDocumentId: Ref - }> { + success: boolean + seqNumber: number + code: string + documentMetaId: Ref + projectDocumentId: Ref +}> { const projectId = project ?? documents.ids.NoProject const incResult = await client.updateDoc( @@ -476,10 +476,10 @@ export async function createNewFolder ( parent: Ref | undefined, title: string ): Promise<{ - success: boolean - documentMetaId: Ref - projectDocumentId: Ref - }> { + success: boolean + documentMetaId: Ref + projectDocumentId: Ref +}> { const projectId = project ?? documents.ids.NoProject const ops = client.apply() diff --git a/plugins/controlled-documents/src/utils.ts b/plugins/controlled-documents/src/utils.ts index 35b3b845b1..8a8dd3a4d7 100644 --- a/plugins/controlled-documents/src/utils.ts +++ b/plugins/controlled-documents/src/utils.ts @@ -56,7 +56,7 @@ import { * @public */ export const genRanks = (count: number): Generator => - (function * () { + (function* () { const sys = new LexoNumeralSystem36() const base = 36 const max = base ** 6 diff --git a/plugins/converter-resources/.eslintrc.js b/plugins/converter-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/converter-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/converter-resources/eslint.config.mjs b/plugins/converter-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/converter-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/converter-resources/package.json b/plugins/converter-resources/package.json index b509cc4db7..e75ff090cf 100644 --- a/plugins/converter-resources/package.json +++ b/plugins/converter-resources/package.json @@ -20,25 +20,24 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "eslint": "^8.54.0", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "jest": "^30.4.2", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "sass": "^1.80.0", - "eslint-plugin-svelte": "^2.35.1", - "prettier-plugin-svelte": "^3.4.0" + "eslint-plugin-svelte": "^3.23.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/converter-resources/src/components/CopyAsMarkdownButton.svelte b/plugins/converter-resources/src/components/CopyAsMarkdownButton.svelte index b09753503b..38aa49cfb2 100644 --- a/plugins/converter-resources/src/components/CopyAsMarkdownButton.svelte +++ b/plugins/converter-resources/src/components/CopyAsMarkdownButton.svelte @@ -33,7 +33,7 @@ } ] satisfies DropdownIntlItem[] - async function handleCopyAll (e: Event): Promise { + async function handleCopyAll(e: Event): Promise { if (relationshipTableData !== undefined) { await copyRelationshipTableAsMarkdown(e, relationshipTableData) } else if (_class !== undefined && query !== undefined) { @@ -49,7 +49,7 @@ } } - async function onActionSelected (event?: CustomEvent): Promise { + async function onActionSelected(event?: CustomEvent): Promise { if (event == null || event.detail !== COPY_ALL_ACTION_ID) { return } diff --git a/plugins/converter-resources/src/formatter/utils.ts b/plugins/converter-resources/src/formatter/utils.ts index 56f1f0283f..d62f3ffdac 100644 --- a/plugins/converter-resources/src/formatter/utils.ts +++ b/plugins/converter-resources/src/formatter/utils.ts @@ -141,7 +141,7 @@ export async function formatSingleValue ( const isRef = attrType?._class === core.class.RefTo if (isRef) { if (attrType.to !== undefined && hierarchy.isDerived(attrType.to, contact.mixin.Employee)) { - const name = await loadPersonNameByRef(value as any, hierarchy, userCache as any) + const name = await loadPersonNameByRef(value, hierarchy, userCache) return name } } diff --git a/plugins/converter-resources/src/markdown/tableBuilder.ts b/plugins/converter-resources/src/markdown/tableBuilder.ts index 30297054cf..3820630c01 100644 --- a/plugins/converter-resources/src/markdown/tableBuilder.ts +++ b/plugins/converter-resources/src/markdown/tableBuilder.ts @@ -74,7 +74,7 @@ async function preloadRefLookups ( const refDocs = await client.findAll(targetClass, { _id: { $in: ids as any } }) const byId = new Map() for (const d of refDocs) { - byId.set(d._id as string, d) + byId.set(d._id, d) } for (const doc of docs) { @@ -135,7 +135,7 @@ function collectRelationshipDocsForRefPreload ( ): Doc[] { const byId = new Map() const add = (d: Doc | undefined): void => { - if (d !== undefined) byId.set(d._id as string, d) + if (d !== undefined) byId.set(d._id, d) } for (const o of props.objects) add(o) diff --git a/plugins/converter-resources/src/model/headerGenerator.ts b/plugins/converter-resources/src/model/headerGenerator.ts index 78eb02c614..23dd01e557 100644 --- a/plugins/converter-resources/src/model/headerGenerator.ts +++ b/plugins/converter-resources/src/model/headerGenerator.ts @@ -14,7 +14,7 @@ // import type { Class, Doc, Hierarchy, Ref } from '@hcengineering/core' -import { translate, type IntlString } from '@hcengineering/platform' +import { translate } from '@hcengineering/platform' import type { AttributeModel } from '@hcengineering/view' import { isIntlString } from '../formatter/utils' @@ -61,7 +61,7 @@ export async function generateHeaders ( if (attr.label.startsWith('custom')) { label = await resolveCustomAttributeLabel(attr.label, firstDocClass, hierarchy, language) } else if (isIntlString(attr.label)) { - label = await translate(attr.label as unknown as IntlString, {}, language) + label = await translate(attr.label, {}, language) } else { label = attr.label } diff --git a/plugins/converter/.eslintrc.js b/plugins/converter/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/converter/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/converter/eslint.config.mjs b/plugins/converter/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/converter/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/converter/package.json b/plugins/converter/package.json index 89c1a35a0e..e96567450f 100644 --- a/plugins/converter/package.json +++ b/plugins/converter/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/converter/src/index.ts b/plugins/converter/src/index.ts index 2e477cc74b..fed0969edd 100644 --- a/plugins/converter/src/index.ts +++ b/plugins/converter/src/index.ts @@ -15,7 +15,7 @@ import { converterPlugin, converterId } from './plugin' -export * from './types' +export type * from './types' export { converterId } diff --git a/plugins/converter/src/plugin.ts b/plugins/converter/src/plugin.ts index 9c2a4d286e..f224f8f5cf 100644 --- a/plugins/converter/src/plugin.ts +++ b/plugins/converter/src/plugin.ts @@ -35,10 +35,10 @@ export const converterPlugin = plugin(converterId, { CopyAsMarkdownTable: '' as Resource, CopyRelationshipAsMarkdown: '' as Resource, BuildMarkdownTableFromMetadata: '' as Resource< - (docs: Doc[], metadata: BuildMarkdownTableMetadata, client: Client) => Promise + (docs: Doc[], metadata: BuildMarkdownTableMetadata, client: Client) => Promise >, BuildMarkdownTableFromDocs: '' as Resource< - (docs: Doc[], props: CopyAsMarkdownTableProps, client: Client) => Promise + (docs: Doc[], props: CopyAsMarkdownTableProps, client: Client) => Promise > }, extensions: { diff --git a/plugins/desktop-downloads-assets/.eslintrc.js b/plugins/desktop-downloads-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/desktop-downloads-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/desktop-downloads-assets/eslint.config.mjs b/plugins/desktop-downloads-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/desktop-downloads-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/desktop-downloads-assets/package.json b/plugins/desktop-downloads-assets/package.json index ea099c04dc..d4983a542d 100644 --- a/plugins/desktop-downloads-assets/package.json +++ b/plugins/desktop-downloads-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/desktop-downloads-assets/src/lang.ts b/plugins/desktop-downloads-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/desktop-downloads-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/desktop-downloads-resources/.eslintrc.js b/plugins/desktop-downloads-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/desktop-downloads-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/desktop-downloads-resources/eslint.config.mjs b/plugins/desktop-downloads-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/desktop-downloads-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/desktop-downloads-resources/package.json b/plugins/desktop-downloads-resources/package.json index 24c444fe77..843851e19a 100644 --- a/plugins/desktop-downloads-resources/package.json +++ b/plugins/desktop-downloads-resources/package.json @@ -17,26 +17,25 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/desktop-downloads-resources/src/components/FileDownloadExt.svelte b/plugins/desktop-downloads-resources/src/components/FileDownloadExt.svelte index 0deea4b932..144bcfc9b7 100644 --- a/plugins/desktop-downloads-resources/src/components/FileDownloadExt.svelte +++ b/plugins/desktop-downloads-resources/src/components/FileDownloadExt.svelte @@ -21,7 +21,7 @@ let pressed: boolean = false let element: HTMLElement - function handleClick (): void { + function handleClick(): void { pressed = true showPopup(FileDownloadStatusPopup, {}, element, () => { pressed = false diff --git a/plugins/desktop-downloads/.eslintrc.js b/plugins/desktop-downloads/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/desktop-downloads/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/desktop-downloads/eslint.config.mjs b/plugins/desktop-downloads/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/desktop-downloads/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/desktop-downloads/package.json b/plugins/desktop-downloads/package.json index 0c6d13a917..2a44677122 100644 --- a/plugins/desktop-downloads/package.json +++ b/plugins/desktop-downloads/package.json @@ -22,18 +22,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/ui": "workspace:^0.7.0", diff --git a/plugins/desktop-downloads/src/index.ts b/plugins/desktop-downloads/src/index.ts index 43a0854e6a..3d758c4425 100644 --- a/plugins/desktop-downloads/src/index.ts +++ b/plugins/desktop-downloads/src/index.ts @@ -15,7 +15,7 @@ import { desktopDownloadsId, desktopDownloadsPlugin } from './plugin' -export * from './types' +export type * from './types' export * from './utils' export { desktopDownloadsId } diff --git a/plugins/desktop-preferences-assets/.eslintrc.js b/plugins/desktop-preferences-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/desktop-preferences-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/desktop-preferences-assets/eslint.config.mjs b/plugins/desktop-preferences-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/desktop-preferences-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/desktop-preferences-assets/package.json b/plugins/desktop-preferences-assets/package.json index 6437fa991c..01fd7aa97f 100644 --- a/plugins/desktop-preferences-assets/package.json +++ b/plugins/desktop-preferences-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/desktop-preferences-assets/src/lang.ts b/plugins/desktop-preferences-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/desktop-preferences-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/desktop-preferences-resources/.eslintrc.js b/plugins/desktop-preferences-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/desktop-preferences-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/desktop-preferences-resources/eslint.config.mjs b/plugins/desktop-preferences-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/desktop-preferences-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/desktop-preferences-resources/package.json b/plugins/desktop-preferences-resources/package.json index 1d35cdb276..d198c848e8 100644 --- a/plugins/desktop-preferences-resources/package.json +++ b/plugins/desktop-preferences-resources/package.json @@ -20,22 +20,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/desktop-preferences-resources/src/components/DesktopPreferencesPresenter.svelte b/plugins/desktop-preferences-resources/src/components/DesktopPreferencesPresenter.svelte index 2b6eda72c6..efa2df8492 100644 --- a/plugins/desktop-preferences-resources/src/components/DesktopPreferencesPresenter.svelte +++ b/plugins/desktop-preferences-resources/src/components/DesktopPreferencesPresenter.svelte @@ -11,7 +11,7 @@ doUpdate('playSound', false) } - async function doUpdate (propName: PreferenceKey, value: any): Promise { + async function doUpdate(propName: PreferenceKey, value: any): Promise { if ('_id' in $activePreferences) { await client.update($activePreferences, { [propName]: value }) } else { @@ -24,7 +24,7 @@ } const client = getClient() - function updater (propName: PreferenceKey) { + function updater(propName: PreferenceKey) { return (e: CustomEvent) => { doUpdate(propName, e.detail) } diff --git a/plugins/desktop-preferences/.eslintrc.js b/plugins/desktop-preferences/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/desktop-preferences/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/desktop-preferences/eslint.config.mjs b/plugins/desktop-preferences/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/desktop-preferences/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/desktop-preferences/package.json b/plugins/desktop-preferences/package.json index d6253535a9..9342dbf63e 100644 --- a/plugins/desktop-preferences/package.json +++ b/plugins/desktop-preferences/package.json @@ -22,18 +22,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/ui": "workspace:^0.7.0", diff --git a/plugins/devmodel-resources/.eslintrc.js b/plugins/devmodel-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/devmodel-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/devmodel-resources/eslint.config.mjs b/plugins/devmodel-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/devmodel-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/devmodel-resources/package.json b/plugins/devmodel-resources/package.json index 36ebe3ba37..db577c921a 100644 --- a/plugins/devmodel-resources/package.json +++ b/plugins/devmodel-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/devmodel-resources/src/index.ts b/plugins/devmodel-resources/src/index.ts index 90ff300fb8..4c1c5b33a6 100644 --- a/plugins/devmodel-resources/src/index.ts +++ b/plugins/devmodel-resources/src/index.ts @@ -86,7 +86,7 @@ export class PresentationClientHook implements ClientHook { return candidate } - async findOne( + async findOne ( client: Client, _class: Ref>, query: DocumentQuery, @@ -113,7 +113,7 @@ export class PresentationClientHook implements ClientHook { return result } - async findAll( + async findAll ( client: Client, _class: Ref>, query: DocumentQuery, diff --git a/plugins/devmodel/.eslintrc.js b/plugins/devmodel/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/devmodel/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/devmodel/eslint.config.mjs b/plugins/devmodel/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/devmodel/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/devmodel/package.json b/plugins/devmodel/package.json index a52a7716a0..dfdd4f839a 100644 --- a/plugins/devmodel/package.json +++ b/plugins/devmodel/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/diffview-assets/.eslintrc.js b/plugins/diffview-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/diffview-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/diffview-assets/eslint.config.mjs b/plugins/diffview-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/diffview-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/diffview-assets/package.json b/plugins/diffview-assets/package.json index aeac71a681..68ea0101e1 100644 --- a/plugins/diffview-assets/package.json +++ b/plugins/diffview-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/diffview-assets/src/lang.ts b/plugins/diffview-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/diffview-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/diffview-resources/.eslintrc.js b/plugins/diffview-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/diffview-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/diffview-resources/eslint.config.mjs b/plugins/diffview-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/diffview-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/diffview-resources/package.json b/plugins/diffview-resources/package.json index 685286eaa4..15577741e5 100644 --- a/plugins/diffview-resources/package.json +++ b/plugins/diffview-resources/package.json @@ -20,22 +20,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/diffview-resources/src/components/DiffView.svelte b/plugins/diffview-resources/src/components/DiffView.svelte index 5072f744ca..ad92873b42 100644 --- a/plugins/diffview-resources/src/components/DiffView.svelte +++ b/plugins/diffview-resources/src/components/DiffView.svelte @@ -25,16 +25,16 @@ let mode: DiffViewMode = getCurrentMode() - function getCurrentMode (): DiffViewMode { + function getCurrentMode(): DiffViewMode { return (localStorage.getItem('diffview.mode') as DiffViewMode) ?? 'unified' } - function saveMode (value: DiffViewMode) { + function saveMode(value: DiffViewMode) { localStorage.setItem('diffview.mode', value) mode = value } - function isFileViewed (diffFile: DiffFile): boolean { + function isFileViewed(diffFile: DiffFile): boolean { const { fileName, sha } = diffFile return viewed.some((file) => file.fileName === fileName && file.sha === sha) diff --git a/plugins/diffview-resources/src/components/FileDiffContent.svelte b/plugins/diffview-resources/src/components/FileDiffContent.svelte index 5a5d2350a2..1a89f85dbc 100644 --- a/plugins/diffview-resources/src/components/FileDiffContent.svelte +++ b/plugins/diffview-resources/src/components/FileDiffContent.svelte @@ -28,17 +28,17 @@ } } - function codeLineClass (line: DiffLine): string { + function codeLineClass(line: DiffLine): string { return `line-${line.type}` } $: highlighted = file.hunks.map((hunk) => renderHunk(hunk, options)) - function prepareLinesForUnifiedView (lines: DiffLineRenderResult[]): DiffLine[] { + function prepareLinesForUnifiedView(lines: DiffLineRenderResult[]): DiffLine[] { return lines.map(({ before, after }) => (after.type !== DiffLineType.EMPTY ? after : before)) } - function prepareLinesForSplitView (lines: DiffLineRenderResult[]): DiffLineRenderResult[] { + function prepareLinesForSplitView(lines: DiffLineRenderResult[]): DiffLineRenderResult[] { const before: DiffLine[] = [] const after: DiffLine[] = [] diff --git a/plugins/diffview-resources/src/components/FileDiffHeader.svelte b/plugins/diffview-resources/src/components/FileDiffHeader.svelte index d74c450ff9..59aa306ac6 100644 --- a/plugins/diffview-resources/src/components/FileDiffHeader.svelte +++ b/plugins/diffview-resources/src/components/FileDiffHeader.svelte @@ -29,7 +29,7 @@ const dispatch = createEventDispatcher() - async function copyFileNameToClipboard (): Promise { + async function copyFileNameToClipboard(): Promise { const { oldName, newName } = file const name = isDevNullName(newName) ? newName : oldName diff --git a/plugins/diffview-resources/src/components/FileDiffView.svelte b/plugins/diffview-resources/src/components/FileDiffView.svelte index e90d262a31..cb78566253 100644 --- a/plugins/diffview-resources/src/components/FileDiffView.svelte +++ b/plugins/diffview-resources/src/components/FileDiffView.svelte @@ -39,7 +39,7 @@ let hideDiffLabel = getHideDiffLabel(file) - function getHideDiffLabel (file: DiffFile): IntlString | undefined { + function getHideDiffLabel(file: DiffFile): IntlString | undefined { if (diffRenderLimit >= 0 && file.stats.addedLines + file.stats.addedLines > diffRenderLimit) { return diffview.string.LargeDiffsAreHidden } @@ -48,7 +48,7 @@ } } - function getNoChangesLabel (file: DiffFile): IntlString { + function getNoChangesLabel(file: DiffFile): IntlString { if (file.hunks.length === 0) { if (file.isTooBig === true) { return diffview.string.FileIsTooLarge @@ -60,7 +60,7 @@ return diffview.string.NoChanges } - function showDiff (): void { + function showDiff(): void { hideDiffLabel = undefined } diff --git a/plugins/diffview/.eslintrc.js b/plugins/diffview/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/diffview/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/diffview/eslint.config.mjs b/plugins/diffview/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/diffview/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/diffview/package.json b/plugins/diffview/package.json index cf303ca9c0..3230965df4 100644 --- a/plugins/diffview/package.json +++ b/plugins/diffview/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/document-assets/.eslintrc.js b/plugins/document-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/document-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/document-assets/eslint.config.mjs b/plugins/document-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/document-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/document-assets/package.json b/plugins/document-assets/package.json index 4dfeaf6020..c1f050d9ee 100644 --- a/plugins/document-assets/package.json +++ b/plugins/document-assets/package.json @@ -25,19 +25,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -53,8 +53,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/document-assets/src/lang.ts b/plugins/document-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/document-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/document-resources/.eslintrc.js b/plugins/document-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/document-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/document-resources/eslint.config.mjs b/plugins/document-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/document-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/document-resources/package.json b/plugins/document-resources/package.json index 5a8007ec9a..83e92c9d93 100644 --- a/plugins/document-resources/package.json +++ b/plugins/document-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/document-resources/src/components/CreateDocument.svelte b/plugins/document-resources/src/components/CreateDocument.svelte index ee25b26dc3..9bd3d0d9be 100644 --- a/plugins/document-resources/src/components/CreateDocument.svelte +++ b/plugins/document-resources/src/components/CreateDocument.svelte @@ -36,7 +36,7 @@ import { createEmptyDocument } from '../utils' import TeamspacePresenter from './teamspace/TeamspacePresenter.svelte' - export function canClose (): boolean { + export function canClose(): boolean { return object.title === '' } @@ -58,7 +58,7 @@ $: if (_space !== space) _parent = undefined $: canSave = getTitle(object.title).length > 0 && _space !== undefined - function chooseIcon (): void { + function chooseIcon(): void { const { icon, color } = object const icons = [document.icon.Document, document.icon.Teamspace] const update = (result: any): void => { @@ -70,11 +70,11 @@ showPopup(IconPicker, { icon, color, icons }, 'top', update, update) } - function getTitle (value: string): string { + function getTitle(value: string): string { return value.trim() } - async function create (): Promise { + async function create(): Promise { await createEmptyDocument(client, id, _space, _parent, object) Analytics.handleEvent(DocumentEvents.DocumentCreated, { id, parent: _parent }) dispatch('close', id) diff --git a/plugins/document-resources/src/components/CreateSnapshot.svelte b/plugins/document-resources/src/components/CreateSnapshot.svelte index c6dca74eba..25dabcbe68 100644 --- a/plugins/document-resources/src/components/CreateSnapshot.svelte +++ b/plugins/document-resources/src/components/CreateSnapshot.svelte @@ -26,7 +26,7 @@ let name = '' - async function create (): Promise { + async function create(): Promise { // TODO implement me // const snapshot = await takeSnapshot(doc.content, name) // await client.addCollection( diff --git a/plugins/document-resources/src/components/DocumentEditor.svelte b/plugins/document-resources/src/components/DocumentEditor.svelte index 52a3d00cfa..46929d33aa 100644 --- a/plugins/document-resources/src/components/DocumentEditor.svelte +++ b/plugins/document-resources/src/components/DocumentEditor.svelte @@ -45,7 +45,7 @@ let collabEditor: CollaboratorEditor - export function focus (position?: FocusPosition): void { + export function focus(position?: FocusPosition): void { collabEditor.focus(position) } diff --git a/plugins/document-resources/src/components/DocumentTitle.svelte b/plugins/document-resources/src/components/DocumentTitle.svelte index b8b7b04f6e..6caf0e4bce 100644 --- a/plugins/document-resources/src/components/DocumentTitle.svelte +++ b/plugins/document-resources/src/components/DocumentTitle.svelte @@ -30,7 +30,7 @@ let input: HTMLInputElement let placeholderTranslation = '' - function updatePlaceholderTranslation (ph: IntlString | undefined): void { + function updatePlaceholderTranslation(ph: IntlString | undefined): void { if (ph) { translateCB(ph, {}, $themeStore.language, (res) => { placeholderTranslation = res @@ -63,7 +63,7 @@ input.addEventListener('focus', updateFocus, { once: true }) } - export function focus (): void { + export function focus(): void { input.focus() } diff --git a/plugins/document-resources/src/components/Documents.svelte b/plugins/document-resources/src/components/Documents.svelte index b15cd1ac4a..99d4590388 100644 --- a/plugins/document-resources/src/components/Documents.svelte +++ b/plugins/document-resources/src/components/Documents.svelte @@ -28,7 +28,7 @@ let search = '' let resultQuery: DocumentQuery = query - function updateResultQuery (search: string, query: DocumentQuery): void { + function updateResultQuery(search: string, query: DocumentQuery): void { resultQuery = search === '' ? { ...query } : { ...query, $search: search } } diff --git a/plugins/document-resources/src/components/EditDoc.svelte b/plugins/document-resources/src/components/EditDoc.svelte index 55ea1bb4eb..4212706de4 100644 --- a/plugins/document-resources/src/components/EditDoc.svelte +++ b/plugins/document-resources/src/components/EditDoc.svelte @@ -77,7 +77,7 @@ let useMaxWidth = getUseMaxWidth() $: saveUseMaxWidth(useMaxWidth) - export function canClose (): boolean { + export function canClose(): boolean { return false } @@ -100,7 +100,7 @@ const notificationClient = getResource(notification.function.GetInboxNotificationsClient).then((res) => res()) $: read(_id) - function read (_id: Ref): void { + function read(_id: Ref): void { if (lastId !== _id) { loadedDocumentContent = false const prev = lastId @@ -114,7 +114,7 @@ clearTimeout(copyTimeout) }) - async function createEmbedding (file: File): Promise<{ file: Ref, type: string } | undefined> { + async function createEmbedding(file: File): Promise<{ file: Ref, type: string } | undefined> { if (doc === undefined) { return undefined } @@ -155,7 +155,7 @@ $: canSave = title.trim().length > 0 - async function saveTitle (ev: Event): Promise { + async function saveTitle(ev: Event): Promise { ev.preventDefault() if (doc === undefined || !canSave) { @@ -169,7 +169,7 @@ } } - async function chooseIcon (): Promise { + async function chooseIcon(): Promise { if (doc !== undefined) { const { icon, color } = doc const icons = [document.icon.Document, document.icon.Teamspace] @@ -182,24 +182,24 @@ } } - function showContextMenu (ev: MouseEvent): void { + function showContextMenu(ev: MouseEvent): void { if (doc !== undefined) { showMenu(ev, { object: doc, excludedActions: [view.action.Open] }) } } - function getUseMaxWidth (): boolean { + function getUseMaxWidth(): boolean { const useMaxWidth = localStorage.getItem('document.useMaxWidth') return useMaxWidth === 'true' } - function saveUseMaxWidth (useMaxWidth: boolean): void { + function saveUseMaxWidth(useMaxWidth: boolean): void { localStorage.setItem('document.useMaxWidth', useMaxWidth.toString()) } let sideContentSpace = 0 - function updateSizeContentSpace (width: number): void { + function updateSizeContentSpace(width: number): void { sideContentSpace = width } diff --git a/plugins/document-resources/src/components/Move.svelte b/plugins/document-resources/src/components/Move.svelte index 0b2b605b80..75218b4b56 100644 --- a/plugins/document-resources/src/components/Move.svelte +++ b/plugins/document-resources/src/components/Move.svelte @@ -34,11 +34,11 @@ let children: Ref[] = [] $: void updateChildren(value) - async function updateChildren (doc: Document): Promise { + async function updateChildren(doc: Document): Promise { children = await findChildren(doc) } - async function save (): Promise { + async function save(): Promise { const ops = client.apply(value._id) await moveDocument(value, space, parent ?? document.ids.NoParent) @@ -55,7 +55,7 @@ await ops.commit() } - async function findChildren (doc: Document): Promise>> { + async function findChildren(doc: Document): Promise>> { const documents = await client.findAll( document.class.Document, { space: doc.space, parent: { $ne: document.ids.NoParent } }, diff --git a/plugins/document-resources/src/components/NewDocumentHeader.svelte b/plugins/document-resources/src/components/NewDocumentHeader.svelte index dd17effa9f..d936820301 100644 --- a/plugins/document-resources/src/components/NewDocumentHeader.svelte +++ b/plugins/document-resources/src/components/NewDocumentHeader.svelte @@ -46,7 +46,7 @@ $: parent = getDocumentIdFromFragment(currentFragment ?? '') - async function newDocument (): Promise { + async function newDocument(): Promise { Analytics.handleEvent(DocumentEvents.CreateDocumentButtonClicked) showPopup(CreateDocument, { space: currentSpace, parent }, 'top', async (id) => { if (id !== undefined && id !== null) { @@ -58,13 +58,13 @@ }) } - async function newTeamspace (): Promise { + async function newTeamspace(): Promise { showPopup(CreateTeamspace, {}, 'top') } let mainActionId: string | undefined = undefined let visibleActions: string[] = [] - function updateActions (teamspace: boolean): void { + function updateActions(teamspace: boolean): void { mainActionId = document.string.CreateDocument if (teamspace) { visibleActions = [document.string.CreateTeamspace, document.string.CreateDocument] diff --git a/plugins/document-resources/src/components/navigator/DocHierarchy.svelte b/plugins/document-resources/src/components/navigator/DocHierarchy.svelte index 32d2cac072..39cdc556db 100644 --- a/plugins/document-resources/src/components/navigator/DocHierarchy.svelte +++ b/plugins/document-resources/src/components/navigator/DocHierarchy.svelte @@ -46,11 +46,11 @@ const client = getClient() const dispatch = createEventDispatcher() - function getDescendants (obj: Ref): Ref[] { + function getDescendants(obj: Ref): Ref[] { return (descendants.get(obj) ?? []).sort((a, b) => a.rank.localeCompare(b.rank)).map((p) => p._id) } - function getActions (doc: Document): Action[] { + function getActions(doc: Document): Action[] { return [ { icon: IconAdd, @@ -68,7 +68,7 @@ ] } - async function getMoreActions (obj: Document): Promise { + async function getMoreActions(obj: Document): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, obj) for (const act of extraActions) { @@ -84,7 +84,7 @@ return result } - function handleDocumentSelected (obj: Ref): void { + function handleDocumentSelected(obj: Ref): void { dispatch('selected', obj) } diff --git a/plugins/document-resources/src/components/navigator/DocTreeElement.svelte b/plugins/document-resources/src/components/navigator/DocTreeElement.svelte index 43d3d8382e..9bdcd3b159 100644 --- a/plugins/document-resources/src/components/navigator/DocTreeElement.svelte +++ b/plugins/document-resources/src/components/navigator/DocTreeElement.svelte @@ -33,17 +33,17 @@ export let level: number = 0 export let actions: Action[] = [] export let moreActions: (originalEvent?: MouseEvent) => Promise | undefined = async () => [] - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false let hovered: boolean = false - async function onMenuClick (ev: MouseEvent): Promise { + async function onMenuClick(ev: MouseEvent): Promise { showPopup(Menu, { actions: await moreActions(ev), ctx: doc._id }, ev.target as HTMLElement, () => { hovered = false }) hovered = true } - function selectDocument (): void { + function selectDocument(): void { const loc = getDocumentLink(doc) navigate(loc) } @@ -63,7 +63,7 @@ {selected} showMenu={hovered} {shouldTooltip} - {forciblyСollapsed} + {forciblyCollapsed} draggable on:dragstart on:dragover diff --git a/plugins/document-resources/src/components/navigator/TeamspaceSpacePresenter.svelte b/plugins/document-resources/src/components/navigator/TeamspaceSpacePresenter.svelte index 74e1e2f1f1..74781efba7 100644 --- a/plugins/document-resources/src/components/navigator/TeamspaceSpacePresenter.svelte +++ b/plugins/document-resources/src/components/navigator/TeamspaceSpacePresenter.svelte @@ -51,7 +51,7 @@ export let currentFragment: string | undefined export let getActions: (space: Space) => Promise = async () => [] export let deselect: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false const client = getClient() @@ -59,11 +59,11 @@ let documentById: Map, Document> = new Map, Document>() let descendants: Map, Document[]> = new Map, Document[]>() - function getDescendants (obj: Ref): Ref[] { + function getDescendants(obj: Ref): Ref[] { return (descendants.get(obj) ?? []).sort((a, b) => a.rank.localeCompare(b.rank)).map((p) => p._id) } - function getAllDescendants (obj: Ref): Ref[] { + function getAllDescendants(obj: Ref): Ref[] { const result: Ref[] = [] const queue: Ref[] = [obj] @@ -115,7 +115,7 @@ } ) - function getDocActions (doc: Document): Action[] { + function getDocActions(doc: Document): Action[] { return [ { icon: IconAdd, @@ -134,7 +134,7 @@ ] } - async function getMoreActions (obj: Document): Promise { + async function getMoreActions(obj: Document): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, obj) for (const act of extraActions) { @@ -158,14 +158,14 @@ let draggedOverTop: number = 0 let cannotDropTo: Ref[] = [] - function canDrop (object: Ref, target: Ref): boolean { + function canDrop(object: Ref, target: Ref): boolean { if (object === target) return false if (cannotDropTo.includes(target)) return false return true } - function onDragStart (event: DragEvent, object: Ref): void { + function onDragStart(event: DragEvent, object: Ref): void { // no prevent default to leverage default rendering // event.preventDefault() if (event.dataTransfer === null || event.target === null) { @@ -181,7 +181,7 @@ closeTooltip() } - function getDropPosition (event: DragEvent): { pos: 'before' | 'after' | undefined, top: number } { + function getDropPosition(event: DragEvent): { pos: 'before' | 'after' | undefined, top: number } { const parentRect = parent.getBoundingClientRect() const targetRect = (event.target as HTMLElement).getBoundingClientRect() const dropPosition = event.clientY - targetRect.top @@ -195,7 +195,7 @@ return { pos, top } } - function onDragOver (event: DragEvent, object: Ref): void { + function onDragOver(event: DragEvent, object: Ref): void { event.preventDefault() // this is an ugly solution to control drop effect // we drag and drop elements that are in the depth of components hierarchy @@ -217,14 +217,14 @@ } } - function onDragEnd (event: DragEvent): void { + function onDragEnd(event: DragEvent): void { event.preventDefault() draggedItem = undefined draggedOver = undefined draggedOverPos = undefined } - function onDrop (event: DragEvent, object: Ref): void { + function onDrop(event: DragEvent, object: Ref): void { event.preventDefault() if (event.dataTransfer === null) { return @@ -276,10 +276,10 @@ title={space.name} type={'nested'} highlighted={currentSpace === space._id} - visible={currentSpace === space._id || forciblyСollapsed} + visible={currentSpace === space._id || forciblyCollapsed} actions={() => getActions(space)} selected={draggedOver === document.ids.NoParent} - {forciblyСollapsed} + {forciblyCollapsed} draggable on:drop={(evt) => { onDrop(evt, document.ids.NoParent) @@ -304,7 +304,7 @@ {draggedOver} /> - {#if (selected || forciblyСollapsed) && visibleItem} + {#if (selected || forciblyCollapsed) && visibleItem} {@const item = visibleItem} getMoreActions(item)} - forciblyСollapsed + forciblyCollapsed /> {/if} diff --git a/plugins/document-resources/src/components/sidebar/History.svelte b/plugins/document-resources/src/components/sidebar/History.svelte index fdaeaa8cab..7048a63d96 100644 --- a/plugins/document-resources/src/components/sidebar/History.svelte +++ b/plugins/document-resources/src/components/sidebar/History.svelte @@ -43,7 +43,7 @@ } ) - async function takeSnapshot (): Promise { + async function takeSnapshot(): Promise { showPopup(CreateSnapshot, { doc: value }, 'top') } diff --git a/plugins/document-resources/src/components/teamspace/CreateTeamspace.svelte b/plugins/document-resources/src/components/teamspace/CreateTeamspace.svelte index 528c97077a..20c1ceb95d 100644 --- a/plugins/document-resources/src/components/teamspace/CreateTeamspace.svelte +++ b/plugins/document-resources/src/components/teamspace/CreateTeamspace.svelte @@ -81,8 +81,8 @@ spaceType = id !== undefined ? await client - .getModel() - .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) + .getModel() + .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) : undefined if (teamspace === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { @@ -92,7 +92,7 @@ rolesAssignment = getRolesAssignment() }) - function getRolesAssignment (): RolesAssignment { + function getRolesAssignment(): RolesAssignment { if (teamspace === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { return {} } @@ -106,7 +106,7 @@ }, {}) } - async function handleSave (): Promise { + async function handleSave(): Promise { if (isNew) { await createTeamspace() } else { @@ -114,7 +114,7 @@ } } - function getTeamspaceData (): Omit, 'type'> { + function getTeamspaceData(): Omit, 'type'> { return { name, description, @@ -128,7 +128,7 @@ } } - async function updateTeamspace (): Promise { + async function updateTeamspace(): Promise { if (teamspace === undefined || spaceType?.targetClass === undefined) { return } @@ -191,7 +191,7 @@ close() } - async function createTeamspace (): Promise { + async function createTeamspace(): Promise { if (typeId === undefined || spaceType?.targetClass === undefined) { return } @@ -214,7 +214,7 @@ close(teamspaceId) } - function chooseIcon (ev: MouseEvent): void { + function chooseIcon(ev: MouseEvent): void { const icons = [document.icon.Document, document.icon.Teamspace] const update = (result: any): void => { if (result !== undefined && result !== null) { @@ -226,24 +226,24 @@ showPopup(IconPicker, { icon, color, icons }, 'top', update, update) } - function close (id?: Ref): void { + function close(id?: Ref): void { dispatch('close', id) } - function handleTypeChange (evt: CustomEvent>): void { + function handleTypeChange(evt: CustomEvent>): void { typeId = evt.detail } $: roles = (spaceType?.$lookup?.roles ?? []) as Role[] - function handleOwnersChanged (newOwners: AccountUuid[]): void { + function handleOwnersChanged(newOwners: AccountUuid[]): void { owners = newOwners const newMembersSet = new Set([...members, ...newOwners]) members = Array.from(newMembersSet) } - function handleMembersChanged (newMembers: AccountUuid[]): void { + function handleMembersChanged(newMembers: AccountUuid[]): void { membersChanged = true // If a member was removed we need to remove it from any roles assignments as well const newMembersSet = new Set(newMembers) @@ -258,7 +258,7 @@ members = newMembers } - function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): void { + function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): void { if (rolesAssignment === undefined) { rolesAssignment = {} } @@ -272,7 +272,7 @@ let membersChanged: boolean = false - function setDefaultMembers (typeType: SpaceType | undefined): void { + function setDefaultMembers(typeType: SpaceType | undefined): void { if (typeType === undefined) return if (membersChanged) return if (teamspace !== undefined) return diff --git a/plugins/document/.eslintrc.js b/plugins/document/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/document/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/document/eslint.config.mjs b/plugins/document/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/document/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/document/package.json b/plugins/document/package.json index 8f23ebfbfc..427a591fdc 100644 --- a/plugins/document/package.json +++ b/plugins/document/package.json @@ -22,18 +22,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/document/src/index.ts b/plugins/document/src/index.ts index 1a3cbecad8..0d5950a891 100644 --- a/plugins/document/src/index.ts +++ b/plugins/document/src/index.ts @@ -16,7 +16,7 @@ import { documentId, documentPlugin } from './plugin' export * from './analytics' -export * from './types' +export type * from './types' export * from './utils' export { documentId } diff --git a/plugins/drive-assets/.eslintrc.js b/plugins/drive-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/drive-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/drive-assets/eslint.config.mjs b/plugins/drive-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/drive-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/drive-assets/package.json b/plugins/drive-assets/package.json index a471fa1176..36109117ff 100644 --- a/plugins/drive-assets/package.json +++ b/plugins/drive-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/drive-assets/src/lang.ts b/plugins/drive-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/drive-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/drive-resources/.eslintrc.js b/plugins/drive-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/drive-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/drive-resources/eslint.config.mjs b/plugins/drive-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/drive-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/drive-resources/package.json b/plugins/drive-resources/package.json index 4403ade8a9..78cd2e2563 100644 --- a/plugins/drive-resources/package.json +++ b/plugins/drive-resources/package.json @@ -20,22 +20,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/drive-resources/src/components/CreateDrive.svelte b/plugins/drive-resources/src/components/CreateDrive.svelte index 46d5a5d71b..e77b734b15 100644 --- a/plugins/drive-resources/src/components/CreateDrive.svelte +++ b/plugins/drive-resources/src/components/CreateDrive.svelte @@ -64,8 +64,8 @@ spaceType = id !== undefined ? await client - .getModel() - .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) + .getModel() + .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) : undefined if (drive === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { @@ -75,7 +75,7 @@ rolesAssignment = getRolesAssignment() }) - function getRolesAssignment (): RolesAssignment { + function getRolesAssignment(): RolesAssignment { if (drive === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { return {} } @@ -89,7 +89,7 @@ }, {}) } - async function handleSave (): Promise { + async function handleSave(): Promise { if (drive === undefined) { await createDrive() } else { @@ -97,7 +97,7 @@ } } - function getDriveData (): Omit, 'type'> { + function getDriveData(): Omit, 'type'> { return { name, description, @@ -110,7 +110,7 @@ } } - async function updateDrive (): Promise { + async function updateDrive(): Promise { if (drive === undefined || spaceType?.targetClass === undefined) { return } @@ -131,7 +131,7 @@ close() } - async function createDrive (): Promise { + async function createDrive(): Promise { if (typeId === undefined || spaceType?.targetClass === undefined) { return } @@ -147,24 +147,24 @@ close(driveId) } - function close (id?: Ref): void { + function close(id?: Ref): void { dispatch('close', id) } - function handleTypeChange (evt: CustomEvent>): void { + function handleTypeChange(evt: CustomEvent>): void { typeId = evt.detail } $: roles = (spaceType?.$lookup?.roles ?? []) as Role[] - function handleOwnersChanged (newOwners: AccountUuid[]): void { + function handleOwnersChanged(newOwners: AccountUuid[]): void { owners = newOwners const newMembersSet = new Set([...members, ...newOwners]) members = Array.from(newMembersSet) } - function handleMembersChanged (newMembers: AccountUuid[]): void { + function handleMembersChanged(newMembers: AccountUuid[]): void { // If a member was removed we need to remove it from any roles assignments as well const newMembersSet = new Set(newMembers) const removedMembersSet = new Set(members.filter((m) => !newMembersSet.has(m))) @@ -178,7 +178,7 @@ members = newMembers } - function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): void { + function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): void { if (rolesAssignment === undefined) { rolesAssignment = {} } diff --git a/plugins/drive-resources/src/components/CreateFolder.svelte b/plugins/drive-resources/src/components/CreateFolder.svelte index f00fb4275c..288d5fde89 100644 --- a/plugins/drive-resources/src/components/CreateFolder.svelte +++ b/plugins/drive-resources/src/components/CreateFolder.svelte @@ -26,7 +26,7 @@ import drive from '../plugin' import { Analytics } from '@hcengineering/analytics' - export function canClose (): boolean { + export function canClose(): boolean { return name === '' } @@ -43,11 +43,11 @@ $: if (_space !== space) _parent = undefined $: canSave = getTitle(name).length > 0 && _space !== undefined - function getTitle (value: string): string { + function getTitle(value: string): string { return value.trim() } - async function create (): Promise { + async function create(): Promise { if (_space === undefined) { return } diff --git a/plugins/drive-resources/src/components/DrivePanel.svelte b/plugins/drive-resources/src/components/DrivePanel.svelte index 47265fb9f3..b1a7d7ea8a 100644 --- a/plugins/drive-resources/src/components/DrivePanel.svelte +++ b/plugins/drive-resources/src/components/DrivePanel.svelte @@ -24,7 +24,7 @@ export let readonly: boolean = false export let embedded: boolean = false - export function canClose (): boolean { + export function canClose(): boolean { return false } diff --git a/plugins/drive-resources/src/components/DriveSpaceHeader.svelte b/plugins/drive-resources/src/components/DriveSpaceHeader.svelte index a7e44d7f9f..5996da04c6 100644 --- a/plugins/drive-resources/src/components/DriveSpaceHeader.svelte +++ b/plugins/drive-resources/src/components/DriveSpaceHeader.svelte @@ -95,16 +95,16 @@ $: filteredBasicActions = [basicActions[0], ...(canCreateFolder ? [basicActions[1]] : [])] $: filteredUploadActions = canUpload ? uploadActions : [] - function handleCreateDrive (): void { + function handleCreateDrive(): void { void showCreateDrivePopup() } - function handleCreateFolder (): void { + function handleCreateFolder(): void { void showCreateFolderPopup(currentSpace, parent, true) } let visibleActions: (string | number | null)[] = [] - function updateActions ( + function updateActions( hasSpace: boolean, uploadActions: HeaderButtonAction[], basicActions: HeaderButtonAction[] diff --git a/plugins/drive-resources/src/components/DriveSpacePresenter.svelte b/plugins/drive-resources/src/components/DriveSpacePresenter.svelte index b6acbd7173..02d25af384 100644 --- a/plugins/drive-resources/src/components/DriveSpacePresenter.svelte +++ b/plugins/drive-resources/src/components/DriveSpacePresenter.svelte @@ -29,7 +29,7 @@ export let currentSpecial: string | undefined export let currentFragment: string | undefined export let getActions: (space: Space) => Promise = async () => [] - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false export let deselect: boolean = false const client = getClient() @@ -38,7 +38,7 @@ let folderById: Map, Folder> = new Map, Folder>() let descendants: Map, Folder[]> = new Map, Folder[]>() - function getDescendants (obj: Ref): Ref[] { + function getDescendants(obj: Ref): Ref[] { return (descendants.get(obj) ?? []).sort((a, b) => a.title.localeCompare(b.title)).map((p) => p._id) } @@ -75,15 +75,15 @@ } ) - function handleDriveSelected (_id: Ref): void { + function handleDriveSelected(_id: Ref): void { navigate(getDriveLink(_id)) } - function handleFolderSelected (_id: Ref): void { + function handleFolderSelected(_id: Ref): void { navigate(getFolderLink(_id)) } - async function getFolderActions (obj: Folder): Promise { + async function getFolderActions(obj: Folder): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, obj) for (const act of extraActions) { @@ -108,11 +108,11 @@ highlighted={currentSpace === space._id && !deselect} selected={currentSpace === space._id && selected === drive.ids.Root && currentFragment !== undefined && !deselect} visible={(currentSpace === space._id && !deselect && descendants.size !== 0 && selected !== space._id) || - (forciblyСollapsed && currentFragment !== undefined)} + (forciblyCollapsed && currentFragment !== undefined)} type={'nested-selectable'} - empty={descendants.size === 0 || (forciblyСollapsed && selected === space._id && !deselect)} + empty={descendants.size === 0 || (forciblyCollapsed && selected === space._id && !deselect)} actions={() => getActions(space)} - {forciblyСollapsed} + {forciblyCollapsed} on:click={() => { handleDriveSelected(space._id) }} @@ -128,7 +128,7 @@ /> - {#if (selected || forciblyСollapsed) && visibleItem} + {#if (selected || forciblyCollapsed) && visibleItem} {@const folder = visibleItem} await getFolderActions(folder)} shouldTooltip - forciblyСollapsed + forciblyCollapsed /> {/if} diff --git a/plugins/drive-resources/src/components/FileDropArea.svelte b/plugins/drive-resources/src/components/FileDropArea.svelte index 12a6578239..d1c771c477 100644 --- a/plugins/drive-resources/src/components/FileDropArea.svelte +++ b/plugins/drive-resources/src/components/FileDropArea.svelte @@ -24,11 +24,11 @@ let dragover = false let counter = 0 - async function handleDragEnter (): Promise { + async function handleDragEnter(): Promise { counter++ } - async function handleDragLeave (): Promise { + async function handleDragLeave(): Promise { if (counter > 0) { counter-- } @@ -37,7 +37,7 @@ } } - async function handleDragOver (e: DragEvent): Promise { + async function handleDragOver(e: DragEvent): Promise { if (e.dataTransfer?.files === undefined) { return } @@ -51,7 +51,7 @@ dragover = true } - async function handleDrop (e: DragEvent): Promise { + async function handleDrop(e: DragEvent): Promise { counter = 0 dragover = false diff --git a/plugins/drive-resources/src/components/FileHeader.svelte b/plugins/drive-resources/src/components/FileHeader.svelte index dae3cea9a0..ba29ff6756 100644 --- a/plugins/drive-resources/src/components/FileHeader.svelte +++ b/plugins/drive-resources/src/components/FileHeader.svelte @@ -25,7 +25,7 @@ let parents: Doc[] = [] $: void updateParents(object) - async function updateParents (object: File): Promise { + async function updateParents(object: File): Promise { parents = await resolveParents(object) } diff --git a/plugins/drive-resources/src/components/FilePanel.svelte b/plugins/drive-resources/src/components/FilePanel.svelte index 6c2488f2d6..c1a06783fd 100644 --- a/plugins/drive-resources/src/components/FilePanel.svelte +++ b/plugins/drive-resources/src/components/FilePanel.svelte @@ -35,7 +35,7 @@ export let readonly: boolean = false export let embedded: boolean = false - export function canClose (): boolean { + export function canClose(): boolean { return false } @@ -61,13 +61,13 @@ ) $: canUploadVersion = object !== undefined && canChangeDoc(drive.class.File, object.space, $permissionsStore) - function handleDownloadFile (): void { + function handleDownloadFile(): void { if (object != null && download != null) { download.click() } } - function handleUploadFile (): void { + function handleUploadFile(): void { if (object != null && canUploadVersion) { const target = { objectId: object._id, objectClass: object._class } void showFilesUploadPopup( @@ -85,7 +85,7 @@ } } - async function onFileUploaded ({ uuid, name, file, metadata }: FileUploadCallbackParams): Promise { + async function onFileUploaded({ uuid, name, file, metadata }: FileUploadCallbackParams): Promise { const data = { file: uuid, title: name, diff --git a/plugins/drive-resources/src/components/FileVersionPresenter.svelte b/plugins/drive-resources/src/components/FileVersionPresenter.svelte index 4ea45b66e9..150385dc1f 100644 --- a/plugins/drive-resources/src/components/FileVersionPresenter.svelte +++ b/plugins/drive-resources/src/components/FileVersionPresenter.svelte @@ -33,7 +33,7 @@ $: version = formatFileVersion(value.version) - function handleClick (): void { + function handleClick(): void { if (disabled) { return } diff --git a/plugins/drive-resources/src/components/FolderBrowser.svelte b/plugins/drive-resources/src/components/FolderBrowser.svelte index ea656bde7e..8c90922812 100644 --- a/plugins/drive-resources/src/components/FolderBrowser.svelte +++ b/plugins/drive-resources/src/components/FolderBrowser.svelte @@ -56,7 +56,7 @@ $: if (query !== undefined) updateSearchQuery(search) $: resultQuery = { ...searchQuery } - function updateSearchQuery (search: string): void { + function updateSearchQuery(search: string): void { searchQuery = search === '' ? { ...query } : { ...query, $search: search } } diff --git a/plugins/drive-resources/src/components/FolderHeader.svelte b/plugins/drive-resources/src/components/FolderHeader.svelte index e657175fab..54aeb3881e 100644 --- a/plugins/drive-resources/src/components/FolderHeader.svelte +++ b/plugins/drive-resources/src/components/FolderHeader.svelte @@ -25,7 +25,7 @@ let parents: Doc[] = [] $: void updateParents(object) - async function updateParents (object: Folder): Promise { + async function updateParents(object: Folder): Promise { parents = await resolveParents(object) } diff --git a/plugins/drive-resources/src/components/FolderPanel.svelte b/plugins/drive-resources/src/components/FolderPanel.svelte index 735bb4ca44..5f3316958d 100644 --- a/plugins/drive-resources/src/components/FolderPanel.svelte +++ b/plugins/drive-resources/src/components/FolderPanel.svelte @@ -24,7 +24,7 @@ export let readonly: boolean = false export let embedded: boolean = false - export function canClose (): boolean { + export function canClose(): boolean { return false } diff --git a/plugins/drive-resources/src/components/FolderTreeLevel.svelte b/plugins/drive-resources/src/components/FolderTreeLevel.svelte index d63487bf88..6092ae8d7e 100644 --- a/plugins/drive-resources/src/components/FolderTreeLevel.svelte +++ b/plugins/drive-resources/src/components/FolderTreeLevel.svelte @@ -32,11 +32,11 @@ const client = getClient() const dispatch = createEventDispatcher() - function getDescendants (obj: Ref): Ref[] { + function getDescendants(obj: Ref): Ref[] { return (descendants.get(obj) ?? []).sort((a, b) => a.title.localeCompare(b.title)).map((p) => p._id) } - async function getActions (obj: Folder): Promise { + async function getActions(obj: Folder): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, obj) for (const act of extraActions) { @@ -52,7 +52,7 @@ return result } - function handleSelected (obj: Ref): void { + function handleSelected(obj: Ref): void { dispatch('selected', obj) } diff --git a/plugins/drive-resources/src/components/MoveResource.svelte b/plugins/drive-resources/src/components/MoveResource.svelte index 74011d854c..1a40c32463 100644 --- a/plugins/drive-resources/src/components/MoveResource.svelte +++ b/plugins/drive-resources/src/components/MoveResource.svelte @@ -32,14 +32,14 @@ let space: Ref = value.space let parent: Ref = value.parent as Ref - async function save (): Promise { + async function save(): Promise { await moveResources([value], space, parent ?? drive.ids.Root) } let children: Ref[] = [] $: void updateChildren(value) - async function updateChildren (resource: Resource): Promise { + async function updateChildren(resource: Resource): Promise { children = await findAllChildren(resource) } diff --git a/plugins/drive-resources/src/components/RenamePopup.svelte b/plugins/drive-resources/src/components/RenamePopup.svelte index 29b10347c6..20fb9f9782 100644 --- a/plugins/drive-resources/src/components/RenamePopup.svelte +++ b/plugins/drive-resources/src/components/RenamePopup.svelte @@ -29,7 +29,7 @@ $: canSave = value !== undefined && value.trim().length > 0 - function handleOkAction (): void { + function handleOkAction(): void { dispatch('close', value?.trim()) } diff --git a/plugins/drive-resources/src/components/ResourcePresenter.svelte b/plugins/drive-resources/src/components/ResourcePresenter.svelte index 72bacd93af..02581d00d4 100644 --- a/plugins/drive-resources/src/components/ResourcePresenter.svelte +++ b/plugins/drive-resources/src/components/ResourcePresenter.svelte @@ -35,11 +35,11 @@ const client = getClient() const hierarchy = client.getHierarchy() - function isFile (value: Resource): value is File { + function isFile(value: Resource): value is File { return hierarchy.isDerived(value._class, drive.class.File) } - function isFolder (value: Resource): value is Folder { + function isFolder(value: Resource): value is Folder { return hierarchy.isDerived(value._class, drive.class.Folder) } diff --git a/plugins/drive-resources/src/components/Thumbnail.svelte b/plugins/drive-resources/src/components/Thumbnail.svelte index e8e8b22fd1..3a257d999c 100644 --- a/plugins/drive-resources/src/components/Thumbnail.svelte +++ b/plugins/drive-resources/src/components/Thumbnail.svelte @@ -26,7 +26,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function extensionIconLabel (name: string): string { + function extensionIconLabel(name: string): string { const parts = name.split('.') const ext = parts[parts.length - 1] return ext.substring(0, 4).toUpperCase() diff --git a/plugins/drive/.eslintrc.js b/plugins/drive/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/drive/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/drive/eslint.config.mjs b/plugins/drive/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/drive/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/drive/package.json b/plugins/drive/package.json index a5aecc6536..00ca6fa414 100644 --- a/plugins/drive/package.json +++ b/plugins/drive/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/emoji-assets/.eslintrc.js b/plugins/emoji-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/emoji-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/emoji-assets/eslint.config.mjs b/plugins/emoji-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/emoji-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/emoji-assets/package.json b/plugins/emoji-assets/package.json index 8da00abf9d..2fc388cda4 100644 --- a/plugins/emoji-assets/package.json +++ b/plugins/emoji-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/emoji-assets/src/lang.ts b/plugins/emoji-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/emoji-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/emoji-resources/.eslintrc.js b/plugins/emoji-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/emoji-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/emoji-resources/eslint.config.mjs b/plugins/emoji-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/emoji-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/emoji-resources/package.json b/plugins/emoji-resources/package.json index 56a251e1ee..72dd7c0767 100644 --- a/plugins/emoji-resources/package.json +++ b/plugins/emoji-resources/package.json @@ -17,26 +17,25 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/emoji-resources/src/components/ActionsPopup.svelte b/plugins/emoji-resources/src/components/ActionsPopup.svelte index c349101c48..97ab3d93ff 100644 --- a/plugins/emoji-resources/src/components/ActionsPopup.svelte +++ b/plugins/emoji-resources/src/components/ActionsPopup.svelte @@ -52,8 +52,8 @@ return equal && noTone ? (e as Emoji.Emoji) : getEmojiSkins(e)?.find((skin) => - equal ? skin.tone === a : Array.isArray(skin.tone) && skin.tone[0] === a && skin.tone[1] === b - ) + equal ? skin.tone === a : Array.isArray(skin.tone) && skin.tone[0] === a && skin.tone[1] === b + ) } const getEmojiStringByTone = (e: ExtendedEmoji, [a, b]: number[]): string | undefined => { return getEmojiByTone(e, [a, b])?.emoji diff --git a/plugins/emoji-resources/src/components/EmojiPopup.svelte b/plugins/emoji-resources/src/components/EmojiPopup.svelte index 2b9371f962..df5228ee62 100644 --- a/plugins/emoji-resources/src/components/EmojiPopup.svelte +++ b/plugins/emoji-resources/src/components/EmojiPopup.svelte @@ -70,7 +70,7 @@ .filter((f) => f !== undefined) as EmojiCategory[] $: categoryTabs = searching ? ([...searchCategory, ...emojiTabs] as EmojiCategory[]) : emojiTabs - function handleScrollToCategory (categoryId: string): void { + function handleScrollToCategory(categoryId: string): void { if (searching && categoryId !== searchCategory[0].id) $searchEmoji = '' if (isMobile) { const tempCat = emojiTabs.find((ct) => ct?.id === categoryId) @@ -88,7 +88,7 @@ } } - function handleCategoryScrolled (): void { + function handleCategoryScrolled(): void { if (isMobile) return const selectedCategory = emojisCat.find((category) => { const labelElement = document.getElementById(category.id) @@ -124,7 +124,7 @@ sendEmoji(event.detail) } - function openContextMenu (event: TouchEvent | MouseEvent, _emoji: EmojiWithGroup, remove: boolean): void { + function openContextMenu(event: TouchEvent | MouseEvent, _emoji: EmojiWithGroup, remove: boolean): void { event.preventDefault() const emoji = _emoji if (emoji === undefined) return @@ -148,7 +148,7 @@ shownContext = false }) } - function handleContextMenu (event: MouseEvent, emoji: EmojiWithGroup, remove: boolean): void { + function handleContextMenu(event: MouseEvent, emoji: EmojiWithGroup, remove: boolean): void { event.preventDefault() const skins = getEmojiSkins(emoji) if (Array.isArray(skins) || remove) openContextMenu(event, emoji, remove) @@ -163,7 +163,7 @@ else window.addEventListener(event, clearTimer) }) } - function clampedContextMenu (event: TouchEvent, emoji: EmojiWithGroup, remove: boolean): void { + function clampedContextMenu(event: TouchEvent, emoji: EmojiWithGroup, remove: boolean): void { const skins = getEmojiSkins(emoji) if (timer == null && (Array.isArray(skins) || remove)) { touchObserver() diff --git a/plugins/emoji-resources/src/components/settings/CreateCustomEmojiPopup.svelte b/plugins/emoji-resources/src/components/settings/CreateCustomEmojiPopup.svelte index b0311c7eae..8e725db274 100644 --- a/plugins/emoji-resources/src/components/settings/CreateCustomEmojiPopup.svelte +++ b/plugins/emoji-resources/src/components/settings/CreateCustomEmojiPopup.svelte @@ -18,7 +18,7 @@ let inputFile: HTMLInputElement let file: File | undefined = undefined - async function save (): Promise { + async function save(): Promise { if (file === undefined) return const { uuid } = await uploadFile(file) await client.createDoc(emojiPlugin.class.CustomEmoji, core.space.Workspace, { @@ -28,7 +28,7 @@ dispatch('close') } - async function imageSize (imageFile: File): Promise<{ width: number, height: number }> { + async function imageSize(imageFile: File): Promise<{ width: number, height: number }> { return await new Promise((resolve, reject) => { try { const fileReader = new FileReader() @@ -46,7 +46,7 @@ }) } - async function fileSelected (): Promise { + async function fileSelected(): Promise { if (inputFile?.files === undefined || inputFile.files === null) return const newFile = inputFile.files[0] as File | undefined if (newFile === undefined || !targetMimes.includes(newFile.type)) { @@ -62,7 +62,7 @@ inputFile.value = '' } - function onShortcodeChange (): void { + function onShortcodeChange(): void { const lowercaseShortcode = shortcode.toLowerCase() if (`:${lowercaseShortcode}:`.match(shortcodeRegex) === null) { shortcodeError = emojiPlugin.string.ShortcodeMatchError @@ -75,7 +75,7 @@ shortcodeError = undefined } - function showConfirmationDialog (): void { + function showConfirmationDialog(): void { const isEmpty = file === undefined && shortcode.trim().length === 0 if (isEmpty) { dispatch('close') diff --git a/plugins/emoji-resources/src/components/settings/SettingsEmojiTable.svelte b/plugins/emoji-resources/src/components/settings/SettingsEmojiTable.svelte index b68dc36cf6..87d4c5739f 100644 --- a/plugins/emoji-resources/src/components/settings/SettingsEmojiTable.svelte +++ b/plugins/emoji-resources/src/components/settings/SettingsEmojiTable.svelte @@ -22,7 +22,7 @@ const resultQuery: DocumentQuery = {} - function showCreateDialog (ev: Event): void { + function showCreateDialog(ev: Event): void { showPopup(CreateCustomEmojiPopup, ev.target as HTMLElement) } diff --git a/plugins/emoji-resources/src/store.ts b/plugins/emoji-resources/src/store.ts index a3be7eacd9..2c5b8a1152 100644 --- a/plugins/emoji-resources/src/store.ts +++ b/plugins/emoji-resources/src/store.ts @@ -9,16 +9,16 @@ export const searchEmoji = writable('') export const resultEmojis = derived([unicodeEmojiStore, customEmojiStore, searchEmoji], ([unicode, custom, search]) => { return search !== '' ? unicode.concat(custom).filter((emoji) => { - if (isCustomEmoji(emoji)) { - return emoji.shortcode.toLowerCase().includes(search.toLowerCase()) - } - return ( - (emoji.tags?.some((tag: string) => tag.toLowerCase().startsWith(search.toLowerCase())) ?? false) || + if (isCustomEmoji(emoji)) { + return emoji.shortcode.toLowerCase().includes(search.toLowerCase()) + } + return ( + (emoji.tags?.some((tag: string) => tag.toLowerCase().startsWith(search.toLowerCase())) ?? false) || (emoji.shortcodes?.some((shortcode: string) => shortcode.toLowerCase().startsWith(search.toLowerCase())) ?? false) || emoji.label.toLowerCase().includes(search.toLowerCase()) - ) - }) + ) + }) : unicode.concat(custom) }) diff --git a/plugins/emoji-resources/src/utils.ts b/plugins/emoji-resources/src/utils.ts index bbb605cc7e..7e37d441e4 100644 --- a/plugins/emoji-resources/src/utils.ts +++ b/plugins/emoji-resources/src/utils.ts @@ -45,12 +45,12 @@ export async function loadUnicodeEmojis (lang: string): Promise { - return { - ...langEmoji, - tags: [...(englishEmojis[index]?.tags ?? []), ...(langEmoji?.tags ?? [])], - shortcodes: [...(englishEmojis[index]?.shortcodes ?? []), ...(langEmoji?.shortcodes ?? [])] - } - }) + return { + ...langEmoji, + tags: [...(englishEmojis[index]?.tags ?? []), ...(langEmoji?.tags ?? [])], + shortcodes: [...(englishEmojis[index]?.shortcodes ?? []), ...(langEmoji?.shortcodes ?? [])] + } + }) : (englishEmojis as Emoji.Emoji[]) return emojis diff --git a/plugins/emoji/.eslintrc.js b/plugins/emoji/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/emoji/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/emoji/eslint.config.mjs b/plugins/emoji/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/emoji/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/emoji/package.json b/plugins/emoji/package.json index 53a0eff159..ad0330a045 100644 --- a/plugins/emoji/package.json +++ b/plugins/emoji/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/emoji/src/plugin.ts b/plugins/emoji/src/plugin.ts index bc38994a4f..e5ba946db6 100644 --- a/plugins/emoji/src/plugin.ts +++ b/plugins/emoji/src/plugin.ts @@ -88,7 +88,7 @@ export const emojiPlugin = plugin(emojiId, { functions: { GetEmojiByEmoticon: '' as Resource<(emoticon: string | undefined) => string | undefined>, GetEmojiByShortCode: '' as Resource< - (shortcode: string | undefined, skinTone?: number) => ExtendedEmoji | undefined + (shortcode: string | undefined, skinTone?: number) => ExtendedEmoji | undefined >, GetCustomEmoji: '' as Resource<(shortcode: string | undefined, skinTone?: number) => CustomEmoji | undefined>, ParseTextWithEmojis: '' as Resource<(text: string) => ParsedTextWithEmojis> diff --git a/plugins/emoji/src/utils.ts b/plugins/emoji/src/utils.ts index 24fd921d96..4b297c16d6 100644 --- a/plugins/emoji/src/utils.ts +++ b/plugins/emoji/src/utils.ts @@ -40,9 +40,9 @@ export const emoticonGlobalRegex = new RegExp(EMOTICON_REGEX.source, EMOTICON_RE export const shortcodeRegex = new RegExp(`(?:^|\\s)(${SHORTCODE_REGEX.source})$`) export const shortcodeGlobalRegex = new RegExp(SHORTCODE_REGEX.source, SHORTCODE_REGEX.flags + 'g') -async function fetchEmojis (locale: Locale, options: FetchEmojisOptions & { compact: true }): Promise +async function fetchEmojis(locale: Locale, options: FetchEmojisOptions & { compact: true }): Promise -async function fetchEmojis (locale: Locale, options?: FetchEmojisOptions & { compact?: false }): Promise +async function fetchEmojis(locale: Locale, options?: FetchEmojisOptions & { compact?: false }): Promise async function fetchEmojis (locale: Locale, options: FetchEmojisExpandedOptions = {}): Promise { const { compact = false, shortcodes: presets = [] } = options diff --git a/plugins/export-assets/.eslintrc.js b/plugins/export-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/export-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/export-assets/eslint.config.mjs b/plugins/export-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/export-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/export-assets/package.json b/plugins/export-assets/package.json index 396d09c635..5e5d90ee19 100644 --- a/plugins/export-assets/package.json +++ b/plugins/export-assets/package.json @@ -26,20 +26,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier-plugin-svelte": "^3.4.0", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -55,8 +55,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/export-assets/src/lang.ts b/plugins/export-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/export-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/export-resources/.eslintrc.js b/plugins/export-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/export-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/export-resources/eslint.config.mjs b/plugins/export-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/export-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/export-resources/package.json b/plugins/export-resources/package.json index c9d1ece28f..aa9b9186f0 100644 --- a/plugins/export-resources/package.json +++ b/plugins/export-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/export-resources/src/components/ExportButton.svelte b/plugins/export-resources/src/components/ExportButton.svelte index a77d962383..ac59a8efab 100644 --- a/plugins/export-resources/src/components/ExportButton.svelte +++ b/plugins/export-resources/src/components/ExportButton.svelte @@ -25,7 +25,7 @@ export let visible: boolean = false export let config: TransformConfig = {} - async function handleExport (): Promise { + async function handleExport(): Promise { try { const baseUrl = getMetadata(plugin.metadata.ExportUrl) const token = getMetadata(presentation.metadata.Token) diff --git a/plugins/export-resources/src/components/ExportSettings.svelte b/plugins/export-resources/src/components/ExportSettings.svelte index 2611b36a9f..c1679dd1a3 100644 --- a/plugins/export-resources/src/components/ExportSettings.svelte +++ b/plugins/export-resources/src/components/ExportSettings.svelte @@ -43,7 +43,7 @@ let selectedDetailLevel: string = 'everything' let isExporting = false - async function exportData (): Promise { + async function exportData(): Promise { if (isExporting) return try { diff --git a/plugins/export-resources/src/components/ExportToWorkspaceModal.svelte b/plugins/export-resources/src/components/ExportToWorkspaceModal.svelte index 2d9d39b7d0..e7dd151c9d 100644 --- a/plugins/export-resources/src/components/ExportToWorkspaceModal.svelte +++ b/plugins/export-resources/src/components/ExportToWorkspaceModal.svelte @@ -66,7 +66,7 @@ $: selectedDocs = spaceExport !== true ? (Array.isArray(value) ? value : value != null ? [value] : []) : [] $: _class = docClass ?? (selectedDocs.length > 0 ? selectedDocs[0]._class : undefined) - function filterDocsForExport (docs: Doc[], exportFilterMode: ExportFilterMode): Doc[] { + function filterDocsForExport(docs: Doc[], exportFilterMode: ExportFilterMode): Doc[] { if (docs.length === 0) return docs if (exportFilterMode === 'effectiveOnly') return docs.filter((doc) => isEffectiveDocument(doc)) if (exportFilterMode === 'skipArchivedObsolete') return docs.filter((doc) => !shouldSkipDocument(doc)) @@ -78,7 +78,7 @@ // Build query with space filter when exporting from space $: exportQuery = spaceExport === true ? { ...(query ?? {}), space: (value as Space)._id } : query - async function loadWorkspaces (): Promise { + async function loadWorkspaces(): Promise { try { workspaceLoading = true const getWorkspacesFn = await getResource(login.function.GetWorkspaces) @@ -123,7 +123,7 @@ $: canSave = targetWorkspace !== undefined && _class != null && (spaceExport === true || filteredSelectedDocs.length > 0) - async function getExportDocuments (): Promise> { + async function getExportDocuments(): Promise> { if (docClass == null) { console.error('Document class is required to export project documents') return [] @@ -140,7 +140,7 @@ return [] } - async function handleExport (): Promise { + async function handleExport(): Promise { if (!canSave || _class == null) return loading = true diff --git a/plugins/export/.eslintrc.js b/plugins/export/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/export/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/export/eslint.config.mjs b/plugins/export/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/export/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/export/package.json b/plugins/export/package.json index 3d625c7916..39e8e66b45 100644 --- a/plugins/export/package.json +++ b/plugins/export/package.json @@ -23,19 +23,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "prettier-plugin-svelte": "^3.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/github-next/eslint.config.mjs b/plugins/github-next/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/github-next/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/global-profile-assets/.eslintrc.js b/plugins/global-profile-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/global-profile-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/global-profile-assets/eslint.config.mjs b/plugins/global-profile-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/global-profile-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/global-profile-assets/package.json b/plugins/global-profile-assets/package.json index b0c5602c70..9a23d88234 100644 --- a/plugins/global-profile-assets/package.json +++ b/plugins/global-profile-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/global-profile-assets/src/index.ts b/plugins/global-profile-assets/src/index.ts index b691d21413..7b04e83ffd 100644 --- a/plugins/global-profile-assets/src/index.ts +++ b/plugins/global-profile-assets/src/index.ts @@ -1,5 +1,6 @@ // // Copyright © 2024 Hardcore Engineering Inc. +// Copyright © 2026 TraceX SAS. // // Licensed under the Eclipse Public License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. You may @@ -14,9 +15,10 @@ // import { addStringsLoader, loadMetadata } from '@hcengineering/platform' +import { loadLang } from './lang' import globalProfile, { globalProfileId } from '@hcengineering/global-profile' -addStringsLoader(globalProfileId, async (lang: string) => await import(`../lang/${lang}.json`)) +addStringsLoader(globalProfileId, loadLang) const icons = require('../assets/icons.svg') as string // eslint-disable-line const ProfileBackground = require('../assets/hero-dark.png') as string // eslint-disable-line diff --git a/plugins/global-profile-assets/src/lang.ts b/plugins/global-profile-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/global-profile-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/global-profile-resources/.eslintrc.js b/plugins/global-profile-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/global-profile-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/global-profile-resources/eslint.config.mjs b/plugins/global-profile-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/global-profile-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/global-profile-resources/package.json b/plugins/global-profile-resources/package.json index 76d3df590e..e50c42696d 100644 --- a/plugins/global-profile-resources/package.json +++ b/plugins/global-profile-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/global-profile-resources/src/components/EditGlobalProfilePopup.svelte b/plugins/global-profile-resources/src/components/EditGlobalProfilePopup.svelte index 7fdf3a9fde..d97c074583 100644 --- a/plugins/global-profile-resources/src/components/EditGlobalProfilePopup.svelte +++ b/plugins/global-profile-resources/src/components/EditGlobalProfilePopup.svelte @@ -65,7 +65,7 @@ editBio.trim() !== bio || editIsPublic !== isPublic) - function handleSave (): void { + function handleSave(): void { if (!canSubmit) return dispatch('update', { @@ -79,7 +79,7 @@ dispatch('close') } - function handleCancel (): void { + function handleCancel(): void { dispatch('close') } diff --git a/plugins/global-profile-resources/src/components/GlobalProfileApp.svelte b/plugins/global-profile-resources/src/components/GlobalProfileApp.svelte index 8ff82cfd6b..a207d43209 100644 --- a/plugins/global-profile-resources/src/components/GlobalProfileApp.svelte +++ b/plugins/global-profile-resources/src/components/GlobalProfileApp.svelte @@ -81,7 +81,7 @@ $: avatarColor = getAvatarColorForId(userId ?? '', $themeStore.dark) $: location = profile != null ? getLocation(profile) : '' - function handleEdit (): void { + function handleEdit(): void { if (profile == null || !isMyProfile) return showPopup( diff --git a/plugins/global-profile/.eslintrc.js b/plugins/global-profile/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/global-profile/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/global-profile/eslint.config.mjs b/plugins/global-profile/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/global-profile/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/global-profile/package.json b/plugins/global-profile/package.json index f80f4b1cf1..d2f0ace11f 100644 --- a/plugins/global-profile/package.json +++ b/plugins/global-profile/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/gmail-assets/.eslintrc.js b/plugins/gmail-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/gmail-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/gmail-assets/eslint.config.mjs b/plugins/gmail-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/gmail-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/gmail-assets/package.json b/plugins/gmail-assets/package.json index a9d1e168c8..67400aec17 100644 --- a/plugins/gmail-assets/package.json +++ b/plugins/gmail-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/gmail-assets/src/lang.ts b/plugins/gmail-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/gmail-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/gmail-resources/.eslintrc.js b/plugins/gmail-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/gmail-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/gmail-resources/eslint.config.mjs b/plugins/gmail-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/gmail-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/gmail-resources/package.json b/plugins/gmail-resources/package.json index f380c00c6e..21355d4e91 100644 --- a/plugins/gmail-resources/package.json +++ b/plugins/gmail-resources/package.json @@ -20,22 +20,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/gmail-resources/src/components/Chats.svelte b/plugins/gmail-resources/src/components/Chats.svelte index 1b521d2ab7..935b183323 100644 --- a/plugins/gmail-resources/src/components/Chats.svelte +++ b/plugins/gmail-resources/src/components/Chats.svelte @@ -56,7 +56,7 @@ { sort: { createdOn: SortingOrder.Descending } } ) - function updateMessagesQuery (channelId: Ref): void { + function updateMessagesQuery(channelId: Ref): void { messagesQuery.query( gmail.class.Message, { attachedTo: channelId }, @@ -72,7 +72,7 @@ const client = getClient() - async function share (): Promise { + async function share(): Promise { const selectedMessages = messages.filter((m) => selected.has(m._id as string as Ref)) await client.addCollection( gmail.class.SharedMessages, @@ -88,7 +88,7 @@ clear() } - function clear (): void { + function clear(): void { selectable = false selected.clear() selected = selected diff --git a/plugins/gmail-resources/src/components/Configure.svelte b/plugins/gmail-resources/src/components/Configure.svelte index 87fa53e47c..48bdde0aaa 100644 --- a/plugins/gmail-resources/src/components/Configure.svelte +++ b/plugins/gmail-resources/src/components/Configure.svelte @@ -39,7 +39,7 @@ $: loadSettings(integration) - async function loadSettings (integration: AccountIntegration): Promise { + async function loadSettings(integration: AccountIntegration): Promise { const type = await client.findOne(setting.class.IntegrationType, { kind: integration.kind }) @@ -50,7 +50,7 @@ shared = (integrationSettings?.shared?.length ?? 0) > 0 } - async function change (shared: AccountUuid[]) { + async function change(shared: AccountUuid[]) { if (integrationSettings == null) { Analytics.handleError( new Error(`Integrations settings are not found for ${integration.socialId} ${integration.kind}`) @@ -63,14 +63,14 @@ }) } - async function apply () { + async function apply() { const integrationClient = await getIntegrationClient() integration = isWorkspaceIntegration(integration) ? integration : await integrationClient.integrate(integration, getCurrentWorkspaceUuid()) } - async function disable () { + async function disable() { if (!shared) { await change([]) } diff --git a/plugins/gmail-resources/src/components/ConfigureV2.svelte b/plugins/gmail-resources/src/components/ConfigureV2.svelte index 6c335aaaff..dcfb09607c 100644 --- a/plugins/gmail-resources/src/components/ConfigureV2.svelte +++ b/plugins/gmail-resources/src/components/ConfigureV2.svelte @@ -52,7 +52,7 @@ } }) - async function apply (): Promise { + async function apply(): Promise { const integrationClient = await getIntegrationClient() integration = isWorkspaceIntegration(integration) ? integration diff --git a/plugins/gmail-resources/src/components/Connect.svelte b/plugins/gmail-resources/src/components/Connect.svelte index 215f2a395f..0a547405ff 100644 --- a/plugins/gmail-resources/src/components/Connect.svelte +++ b/plugins/gmail-resources/src/components/Connect.svelte @@ -28,7 +28,7 @@ const gmailUrl = getMetadata(gmail.metadata.GmailURL) ?? '' let error = false - async function sendRequest (): Promise { + async function sendRequest(): Promise { try { connecting = true const link = concatLink(gmailUrl, '/signin') diff --git a/plugins/gmail-resources/src/components/FullMessage.svelte b/plugins/gmail-resources/src/components/FullMessage.svelte index 01dea7e44c..cce0c7f477 100644 --- a/plugins/gmail-resources/src/components/FullMessage.svelte +++ b/plugins/gmail-resources/src/components/FullMessage.svelte @@ -35,7 +35,7 @@ const client = getClient() let attachments: Attachment[] = [] - async function resendMessage (): Promise { + async function resendMessage(): Promise { const messageId = currentMessage._id as string as Ref await client.updateDoc(gmail.class.NewMessage, currentMessage.space, messageId, { status: 'new' }) } diff --git a/plugins/gmail-resources/src/components/IntegrationSelector.svelte b/plugins/gmail-resources/src/components/IntegrationSelector.svelte index 1c476834af..579d9b0c75 100644 --- a/plugins/gmail-resources/src/components/IntegrationSelector.svelte +++ b/plugins/gmail-resources/src/components/IntegrationSelector.svelte @@ -25,7 +25,7 @@ $: ids = Array.from(new Set(integrations.map((p) => p.createdBy))).filter(notEmpty) - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (e.detail === null) { selected = undefined } else { diff --git a/plugins/gmail-resources/src/components/IntegrationState.svelte b/plugins/gmail-resources/src/components/IntegrationState.svelte index e09133cc9e..568af5caba 100644 --- a/plugins/gmail-resources/src/components/IntegrationState.svelte +++ b/plugins/gmail-resources/src/components/IntegrationState.svelte @@ -59,11 +59,11 @@ }) }) - function subscribe (): void { + function subscribe(): void { unsubscribers.push(onIntegrationEvent('integration:updated', onUpdateIntegration)) } - function onUpdateIntegration (data: IntegrationEventData): void { + function onUpdateIntegration(data: IntegrationEventData): void { if ( data.integration?.socialId === integration.socialId && data.integration?.workspaceUuid === integration.workspaceUuid @@ -72,7 +72,7 @@ } } - async function refresh (): Promise { + async function refresh(): Promise { try { state = await getState(integration.socialId) } catch (err: any) { diff --git a/plugins/gmail-resources/src/components/Main.svelte b/plugins/gmail-resources/src/components/Main.svelte index c3c2bcc7e1..28d1a4c1b8 100644 --- a/plugins/gmail-resources/src/components/Main.svelte +++ b/plugins/gmail-resources/src/components/Main.svelte @@ -70,14 +70,14 @@ gmailMessage = message } - function back () { + function back() { if (newMessage) { return (newMessage = false) } return (currentMessage = undefined) } - async function selectHandler (e: CustomEvent): Promise { + async function selectHandler(e: CustomEvent): Promise { currentMessage = e.detail } diff --git a/plugins/gmail-resources/src/components/Messages.svelte b/plugins/gmail-resources/src/components/Messages.svelte index 258f301af0..6250242d3e 100644 --- a/plugins/gmail-resources/src/components/Messages.svelte +++ b/plugins/gmail-resources/src/components/Messages.svelte @@ -24,7 +24,7 @@ export let selected: Set> = new Set>() const dispatch = createEventDispatcher() - function select (id: Ref): void { + function select(id: Ref): void { if (!selectable) { const currentMessage = messages.find((m) => m._id === id) dispatch('select', currentMessage) diff --git a/plugins/gmail-resources/src/components/NewMessage.svelte b/plugins/gmail-resources/src/components/NewMessage.svelte index 84c63d5c7d..60493fc246 100644 --- a/plugins/gmail-resources/src/components/NewMessage.svelte +++ b/plugins/gmail-resources/src/components/NewMessage.svelte @@ -66,7 +66,7 @@ $: templateProvider !== undefined && templateProvider.set(contact.class.Contact, object) - async function sendMsg (): Promise { + async function sendMsg(): Promise { await client.createDoc( plugin.class.NewMessage, core.space.Workspace, @@ -91,7 +91,7 @@ const dispatch = createEventDispatcher() let inputFile: HTMLInputElement - function fileSelected (): void { + function fileSelected(): void { progress = true const list = inputFile.files if (list === null || list.length === 0) return @@ -103,7 +103,7 @@ progress = false } - function fileDrop (e: DragEvent): void { + function fileDrop(e: DragEvent): void { e.preventDefault() e.stopPropagation() progress = true @@ -116,7 +116,7 @@ progress = false } - async function createAttachment (file: File) { + async function createAttachment(file: File) { try { const uploadFile = await getResource(attachmentP.helper.UploadFile) const { uuid, metadata } = await uploadFile(file) @@ -142,7 +142,7 @@ const query = createQuery() - async function removeAttachment (attachment: Attachment): Promise { + async function removeAttachment(attachment: Attachment): Promise { const deleteFile = await getResource(attachmentP.helper.DeleteFile) await client.removeCollection( attachment._class, @@ -168,7 +168,7 @@ } ) - function onTemplate (e: CustomEvent): void { + function onTemplate(e: CustomEvent): void { if (e.detail !== undefined) { if (obj.subject.trim() === '') { obj.subject = e.detail diff --git a/plugins/gmail-resources/src/components/NewMessages.svelte b/plugins/gmail-resources/src/components/NewMessages.svelte index b46d438c30..06d1505b66 100644 --- a/plugins/gmail-resources/src/components/NewMessages.svelte +++ b/plugins/gmail-resources/src/components/NewMessages.svelte @@ -78,7 +78,7 @@ let copy: string = '' let saved = false - async function sendMsg (): Promise { + async function sendMsg(): Promise { const templateProvider = (await getResource(templates.function.GetTemplateDataProvider))() if (templateProvider === undefined || selectedIntegration === undefined) return for (const channel of channels) { @@ -125,7 +125,7 @@ const dispatch = createEventDispatcher() let inputFile: HTMLInputElement - function fileSelected () { + function fileSelected() { const list = inputFile.files if (list === null || list.length === 0) return for (let index = 0; index < list.length; index++) { @@ -135,7 +135,7 @@ inputFile.value = '' } - function fileDrop (e: DragEvent) { + function fileDrop(e: DragEvent) { const list = e.dataTransfer?.files if (list === undefined || list.length === 0) return for (let index = 0; index < list.length; index++) { @@ -144,7 +144,7 @@ } } - async function createAttachment (file: File) { + async function createAttachment(file: File) { try { const uploadFile = await getResource(attachmentP.helper.UploadFile) const { uuid, metadata } = await uploadFile(file) @@ -170,7 +170,7 @@ const attachmentsQ = createQuery() - async function removeAttachment (attachment: Attachment): Promise { + async function removeAttachment(attachment: Attachment): Promise { const deleteFile = await getResource(attachmentP.helper.DeleteFile) await client.removeCollection( attachment._class, @@ -195,7 +195,7 @@ } ) - function getName (channel: Channel): string { + function getName(channel: Channel): string { const contact = contactMap.get(channel.attachedTo as Ref) if (contact === undefined) return channel.value return `${getContactName(client.getHierarchy(), contact)} (${channel.value})` @@ -228,7 +228,7 @@ integrations.find((p) => p.createdBy !== undefined && mySocialIds.includes(p.createdBy)) ?? integrations[0] }) - function onTemplate (e: CustomEvent): void { + function onTemplate(e: CustomEvent): void { if (e.detail !== undefined) { if (subject.trim() === '') { subject = e.detail diff --git a/plugins/gmail-resources/src/components/SharedMessages.svelte b/plugins/gmail-resources/src/components/SharedMessages.svelte index ef25062e79..be05ea05ab 100644 --- a/plugins/gmail-resources/src/components/SharedMessages.svelte +++ b/plugins/gmail-resources/src/components/SharedMessages.svelte @@ -21,7 +21,7 @@ export let value: SharedMessages - function selectHandler (e: CustomEvent) { + function selectHandler(e: CustomEvent) { const message = e.detail showPopup(FullMessagePopup, { message diff --git a/plugins/gmail-resources/src/components/activity/GmailSharedMessage.svelte b/plugins/gmail-resources/src/components/activity/GmailSharedMessage.svelte index 9558b5b39d..d79ed1a361 100644 --- a/plugins/gmail-resources/src/components/activity/GmailSharedMessage.svelte +++ b/plugins/gmail-resources/src/components/activity/GmailSharedMessage.svelte @@ -29,7 +29,7 @@ $: loadObject(_id, value) - function loadObject (_id?: Ref, value?: SharedMessages): void { + function loadObject(_id?: Ref, value?: SharedMessages): void { if (value === undefined && _id !== undefined) { query.query(gmail.class.SharedMessages, { _id }, (res) => { doc = res[0] diff --git a/plugins/gmail-resources/src/components/activity/GmailWriteMessage.svelte b/plugins/gmail-resources/src/components/activity/GmailWriteMessage.svelte index c930546a06..6ce2abae19 100644 --- a/plugins/gmail-resources/src/components/activity/GmailWriteMessage.svelte +++ b/plugins/gmail-resources/src/components/activity/GmailWriteMessage.svelte @@ -31,7 +31,7 @@ $: loadObject(_id, value) - function loadObject (_id?: Ref, value?: Message): void { + function loadObject(_id?: Ref, value?: Message): void { if (value === undefined && _id !== undefined) { query.query(gmail.class.Message, { _id }, (res) => { doc = res[0] @@ -42,7 +42,7 @@ } } - async function click (ev: MouseEvent): Promise { + async function click(ev: MouseEvent): Promise { ev.stopPropagation() if (onClick) { diff --git a/plugins/gmail/.eslintrc.js b/plugins/gmail/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/gmail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/gmail/eslint.config.mjs b/plugins/gmail/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/gmail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/gmail/package.json b/plugins/gmail/package.json index 6ea3faa17a..57a898ace3 100644 --- a/plugins/gmail/package.json +++ b/plugins/gmail/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/guest-assets/.eslintrc.js b/plugins/guest-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/guest-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/guest-assets/eslint.config.mjs b/plugins/guest-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/guest-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/guest-assets/package.json b/plugins/guest-assets/package.json index 4c4f7260d8..7af1037d2f 100644 --- a/plugins/guest-assets/package.json +++ b/plugins/guest-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/guest-assets/src/index.ts b/plugins/guest-assets/src/index.ts index 383ec0a31f..cd14dd0410 100644 --- a/plugins/guest-assets/src/index.ts +++ b/plugins/guest-assets/src/index.ts @@ -1,5 +1,6 @@ // // Copyright © 2024 Hardcore Engineering Inc. +// Copyright © 2026 TraceX SAS. // // Licensed under the Eclipse Public License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. You may @@ -14,10 +15,11 @@ // import { addStringsLoader, loadMetadata } from '@hcengineering/platform' +import { loadLang } from './lang' import guest, { guestId } from '@hcengineering/guest' const icons = require('../assets/icons.svg') as string // eslint-disable-line loadMetadata(guest.icon, { Link: `${icons}#link` }) -addStringsLoader(guestId, async (lang: string) => await import(`../lang/${lang}.json`)) +addStringsLoader(guestId, loadLang) diff --git a/plugins/guest-assets/src/lang.ts b/plugins/guest-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/guest-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/guest-resources/.eslintrc.js b/plugins/guest-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/guest-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/guest-resources/eslint.config.mjs b/plugins/guest-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/guest-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/guest-resources/package.json b/plugins/guest-resources/package.json index 3952184244..8d6977e993 100644 --- a/plugins/guest-resources/package.json +++ b/plugins/guest-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/guest-resources/src/components/CreatePublicLink.svelte b/plugins/guest-resources/src/components/CreatePublicLink.svelte index f56a770cd7..7691f06c85 100644 --- a/plugins/guest-resources/src/components/CreatePublicLink.svelte +++ b/plugins/guest-resources/src/components/CreatePublicLink.svelte @@ -37,14 +37,14 @@ const dispatch = createEventDispatcher() - async function generate (object: Doc): Promise { + async function generate(object: Doc): Promise { const panelComponent = client.getHierarchy().classHierarchyMixin(object._class, view.mixin.ObjectPanel) const comp = panelComponent?.component ?? view.component.EditDoc const loc = await getObjectLinkFragment(client.getHierarchy(), object, {}, comp) await createPublicLink(client, value, loc) } - async function checkNeedGenerate (value: Doc, loading: boolean, link: PublicLink | undefined): Promise { + async function checkNeedGenerate(value: Doc, loading: boolean, link: PublicLink | undefined): Promise { if (!loading || link !== undefined) return await generate(value) } @@ -60,18 +60,18 @@ { limit: 1 } ) - function close () { + function close() { dispatch('close') } - function copy (): void { + function copy(): void { if (link?.url === undefined || link.url === '') return copyTextToClipboard(link.url) copied = true copiedTime = Date.now() } - async function revoke (): Promise { + async function revoke(): Promise { if (!revokable || link === undefined) return showPopup( MessageBox, @@ -97,7 +97,7 @@ let copied = false $: checkLabel($ticker) - function checkLabel (now: number) { + function checkLabel(now: number) { if (copiedTime) { if (copied && now - copiedTime > 1000) { copied = false diff --git a/plugins/guest-resources/src/components/Guest.svelte b/plugins/guest-resources/src/components/Guest.svelte index 57795bf50a..0f0c82bd63 100644 --- a/plugins/guest-resources/src/components/Guest.svelte +++ b/plugins/guest-resources/src/components/Guest.svelte @@ -49,7 +49,7 @@ const client = getClient() - async function load (): Promise { + async function load(): Promise { const token = getMetadata(presentation.metadata.Token) if (token == null) return false const { extra } = decodeTokenPayload(token) @@ -73,7 +73,7 @@ .getModel() .findAllSync(workbench.class.Application, { hidden: false, _id: { $nin: excludedApps } }) - async function resolveShortLink (loc: Location): Promise { + async function resolveShortLink(loc: Location): Promise { if (loc.path[2] != null && loc.path[2].trim().length > 0) { const app = apps.find((p) => p.alias === loc.path[2]) if (app?.locationResolver) { @@ -83,7 +83,7 @@ } } - function mergeLoc (loc: Location, resolved: ResolvedLocation): Location { + function mergeLoc(loc: Location, resolved: ResolvedLocation): Location { const resolvedApp = resolved.loc.path[2] const resolvedSpace = resolved.loc.path[3] const resolvedSpecial = resolved.loc.path[4] @@ -119,7 +119,7 @@ let navigatorModel: NavigatorModel | undefined let currentView: ViewConfiguration | undefined - function setSpaceSpecial (spaceSpecial: string | undefined): void { + function setSpaceSpecial(spaceSpecial: string | undefined): void { if (currentSpecial !== undefined && spaceSpecial === currentSpecial) return if (spaceSpecial === undefined) return specialComponent = getSpecialComponent(spaceSpecial) @@ -128,7 +128,7 @@ } } - function getSpecialComponent (id: string): SpecialNavModel | undefined { + function getSpecialComponent(id: string): SpecialNavModel | undefined { const sp = navigatorModel?.specials?.find((x) => x.id === id) if (sp !== undefined) { return sp @@ -141,7 +141,7 @@ } } - async function syncLoc (loc: Location): Promise { + async function syncLoc(loc: Location): Promise { if (loc.path.length > 3 && getSpecialComponent(loc.path[3]) === undefined) { // resolve short links const resolvedLoc = await resolveShortLink(loc) @@ -181,7 +181,7 @@ const linkProviders = client.getModel().findAllSync(view.mixin.LinkIdProvider, {}) - async function setOpenPanelFocus (fragment: string): Promise { + async function setOpenPanelFocus(fragment: string): Promise { const props = decodeURIComponent(fragment).split('|') if (props.length >= 3) { @@ -213,12 +213,12 @@ } } - async function doSyncLoc (loc: Location): Promise { + async function doSyncLoc(loc: Location): Promise { await syncLoc(loc) await updateWindowTitle(loc) } - async function updateSpace (spaceId?: Ref): Promise { + async function updateSpace(spaceId?: Ref): Promise { if (spaceId === currentSpace) return if (spaceId === undefined) return const space = await client.findOne(core.class.Space, { _id: spaceId }) @@ -229,7 +229,7 @@ currentView = view.view } - async function updateWindowTitle (loc: Location): Promise { + async function updateWindowTitle(loc: Location): Promise { const ws = loc.path[1] const docTitle = await getWindowTitle(loc) if (docTitle !== undefined && docTitle !== '') { @@ -240,7 +240,7 @@ } } - async function getWindowTitle (loc: Location): Promise { + async function getWindowTitle(loc: Location): Promise { if (loc.fragment == null) return const hierarchy = client.getHierarchy() const [, id, _class] = decodeURIComponent(loc.fragment).split('|') diff --git a/plugins/guest/.eslintrc.js b/plugins/guest/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/guest/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/guest/eslint.config.mjs b/plugins/guest/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/guest/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/guest/package.json b/plugins/guest/package.json index e71564b984..b99318c9ca 100644 --- a/plugins/guest/package.json +++ b/plugins/guest/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/hr-assets/.eslintrc.js b/plugins/hr-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/hr-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/hr-assets/eslint.config.mjs b/plugins/hr-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/hr-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/hr-assets/package.json b/plugins/hr-assets/package.json index 3a6299b215..6ef6ec991c 100644 --- a/plugins/hr-assets/package.json +++ b/plugins/hr-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/hr-assets/src/lang.ts b/plugins/hr-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/hr-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/hr-resources/.eslintrc.js b/plugins/hr-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/hr-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/hr-resources/eslint.config.mjs b/plugins/hr-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/hr-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/hr-resources/package.json b/plugins/hr-resources/package.json index 985a1bac8e..0f427ac2a9 100644 --- a/plugins/hr-resources/package.json +++ b/plugins/hr-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/hr-resources/src/components/CreateDepartment.svelte b/plugins/hr-resources/src/components/CreateDepartment.svelte index b704d1dd5c..359a99874d 100644 --- a/plugins/hr-resources/src/components/CreateDepartment.svelte +++ b/plugins/hr-resources/src/components/CreateDepartment.svelte @@ -31,13 +31,13 @@ let name: string = '' let lead: Ref | null = null - export function canClose (): boolean { + export function canClose(): boolean { return name === '' } const client = getClient() - async function createDepartment () { + async function createDepartment() { const id = await client.createDoc(hr.class.Department, core.space.Workspace, { name, description: '', diff --git a/plugins/hr-resources/src/components/CreateRequest.svelte b/plugins/hr-resources/src/components/CreateRequest.svelte index f2c1ec79fe..2f98282222 100644 --- a/plugins/hr-resources/src/components/CreateRequest.svelte +++ b/plugins/hr-resources/src/components/CreateRequest.svelte @@ -65,11 +65,11 @@ let value = new Date(date).getTime() $: dueDate = new Date(value).getTime() - export function canClose (): boolean { + export function canClose(): boolean { return description.length === 0 } - async function saveRequest () { + async function saveRequest() { let date: number | undefined if (value != null) date = value if (date === undefined) return @@ -85,11 +85,11 @@ await descriptionBox.createAttachments() } - function typeSelected (_id: Ref): void { + function typeSelected(_id: Ref): void { type = types.find((p) => p._id === _id) } - function moreThanLimit ( + function moreThanLimit( employeeRequests: Map, Request[]>, staff: Staff, startDate: Date, diff --git a/plugins/hr-resources/src/components/DepartmentCard.svelte b/plugins/hr-resources/src/components/DepartmentCard.svelte index ddcddf6e9e..b4fdf1b716 100644 --- a/plugins/hr-resources/src/components/DepartmentCard.svelte +++ b/plugins/hr-resources/src/components/DepartmentCard.svelte @@ -34,7 +34,7 @@ const client = getClient() - async function changeLead (result: Employee | null | undefined): Promise { + async function changeLead(result: Employee | null | undefined): Promise { if (result === undefined) { return } @@ -45,7 +45,7 @@ } } - function openLeadEditor (event: MouseEvent) { + function openLeadEditor(event: MouseEvent) { event?.preventDefault() event?.stopPropagation() showPopup( @@ -64,11 +64,11 @@ ) } - function createChild (e: MouseEvent) { + function createChild(e: MouseEvent) { showPopup(CreateDepartment, { space: value._id }, eventToHTMLElement(e)) } - function edit (e: MouseEvent): void { + function edit(e: MouseEvent): void { openDoc(client.getHierarchy(), value) } @@ -83,7 +83,7 @@ $: dragging = value._id === dragOver?._id && dragPersonId !== undefined - function onContext (e: MouseEvent): void { + function onContext(e: MouseEvent): void { showMenu(e, { object: value, baseMenuClass: value._class }) } diff --git a/plugins/hr-resources/src/components/DepartmentStaff.svelte b/plugins/hr-resources/src/components/DepartmentStaff.svelte index 6b493906b1..433198ef01 100644 --- a/plugins/hr-resources/src/components/DepartmentStaff.svelte +++ b/plugins/hr-resources/src/components/DepartmentStaff.svelte @@ -42,7 +42,7 @@ } ) - function add (e: MouseEvent): void { + function add(e: MouseEvent): void { showPopup( UsersPopup, { diff --git a/plugins/hr-resources/src/components/EditDepartment.svelte b/plugins/hr-resources/src/components/EditDepartment.svelte index e96320de76..32ea456ae6 100644 --- a/plugins/hr-resources/src/components/EditDepartment.svelte +++ b/plugins/hr-resources/src/components/EditDepartment.svelte @@ -32,7 +32,7 @@ const dispatch = createEventDispatcher() const client = getClient() - async function onAvatarDone () { + async function onAvatarDone() { if (object === undefined) return if (object.avatar != null) { @@ -42,7 +42,7 @@ await client.diffUpdate(object, avatar) } - async function nameChange (): Promise { + async function nameChange(): Promise { if (object === undefined) return await client.update(object, { name: object.name diff --git a/plugins/hr-resources/src/components/EditRequest.svelte b/plugins/hr-resources/src/components/EditRequest.svelte index 0f6cf849c9..5d2ea9e70e 100644 --- a/plugins/hr-resources/src/components/EditRequest.svelte +++ b/plugins/hr-resources/src/components/EditRequest.svelte @@ -25,7 +25,7 @@ const dispatch = createEventDispatcher() const client = getClient() - async function onChangeDescription (): Promise { + async function onChangeDescription(): Promise { if (object === undefined) return await client.update(object, { description: object.description diff --git a/plugins/hr-resources/src/components/EditRequestType.svelte b/plugins/hr-resources/src/components/EditRequestType.svelte index 01c65a1b70..a1777a4b37 100644 --- a/plugins/hr-resources/src/components/EditRequestType.svelte +++ b/plugins/hr-resources/src/components/EditRequestType.svelte @@ -31,11 +31,11 @@ let newType: RequestType | undefined = type - function typeSelected (_id: Ref): void { + function typeSelected(_id: Ref): void { newType = types.find((p) => p._id === _id) } - async function changeType (): Promise { + async function changeType(): Promise { if (newType !== undefined && newType._id !== type?._id) { await client.update(object, { type: newType._id diff --git a/plugins/hr-resources/src/components/PersonsPresenter.svelte b/plugins/hr-resources/src/components/PersonsPresenter.svelte index 460f616a7d..9cc8625b3f 100644 --- a/plugins/hr-resources/src/components/PersonsPresenter.svelte +++ b/plugins/hr-resources/src/components/PersonsPresenter.svelte @@ -31,7 +31,7 @@ let persons: WithLookup[] = [] $: persons = Array.isArray(value) ? value : [value] - function ondrag (p: Employee): void { + function ondrag(p: Employee): void { dragPerson = p as WithLookup } diff --git a/plugins/hr-resources/src/components/Schedule.svelte b/plugins/hr-resources/src/components/Schedule.svelte index 0fc1cbac13..68a3fb2167 100644 --- a/plugins/hr-resources/src/components/Schedule.svelte +++ b/plugins/hr-resources/src/components/Schedule.svelte @@ -65,7 +65,7 @@ let search = '' let resultQuery: DocumentQuery = {} - function updateResultQuery (search: string, viewOptions: ViewOptions | undefined): void { + function updateResultQuery(search: string, viewOptions: ViewOptions | undefined): void { const q: DocumentQuery = search === '' ? {} : { name: { $like: '%' + search + '%' } } resultQuery = viewOptions?.hideInactive !== false ? { ...q, active: true } : q } @@ -119,7 +119,7 @@ ancestors = ancestors }) - function inc (val: number): void { + function inc(val: number): void { switch (mode) { case CalendarMode.Month: { currentDate.setDate(1) @@ -134,7 +134,7 @@ currentDate = currentDate } - function getMonthName (date: Date): string { + function getMonthName(date: Date): string { return new Intl.DateTimeFormat('default', { month: 'long' }).format(date) @@ -148,7 +148,7 @@ } } - function departmentSelected (selected: Ref): void { + function departmentSelected(selected: Ref): void { department = selected } @@ -162,7 +162,7 @@ let preference: ViewletPreference | undefined let loading = false - function exportTable (evt: Event) { + function exportTable(evt: Event) { interface ExportPopupItem extends DropdownIntlItem { separator: ',' | ';' } diff --git a/plugins/hr-resources/src/components/ScheduleView.svelte b/plugins/hr-resources/src/components/ScheduleView.svelte index 379539374d..87c7deb56c 100644 --- a/plugins/hr-resources/src/components/ScheduleView.svelte +++ b/plugins/hr-resources/src/components/ScheduleView.svelte @@ -84,7 +84,7 @@ let departmentStaff: Staff[] = [] let editableList: Ref[] = [] - function update (staffIdsForOpenedDepartments: Ref[], startDate: Date, endDate: Date) { + function update(staffIdsForOpenedDepartments: Ref[], startDate: Date, endDate: Date) { lq.query( hr.class.Request, { @@ -100,7 +100,7 @@ $: update(staffIdsForOpenedDepartments, startDate, endDate) - function updateRequest (requests: Request[], startDate: Date, endDate: Date) { + function updateRequest(requests: Request[], startDate: Date, endDate: Date) { const res = requests.filter( (r) => fromTzDate(r.tzDueDate) >= startDate.getTime() && fromTzDate(r.tzDate) <= endDate.getTime() ) @@ -117,7 +117,7 @@ $: updateRequest(requests, startDate, endDate) - function pushChilds ( + function pushChilds( department: Ref, departmentStaff: Staff[], departmentById: Map, Department> @@ -127,11 +127,11 @@ editableList.push(...staff.filter((p) => !editableList.includes(p._id)).map((p) => p._id)) } - function isEditable (department: Department): boolean { + function isEditable(department: Department): boolean { return department.teamLead === currentEmployee || department.managers.includes(currentEmployee) } - function checkDepartmentEditable ( + function checkDepartmentEditable( departmentById: Map, Department>, department: Ref, departmentStaff: Staff[], @@ -155,7 +155,7 @@ } } - function updateEditableList ( + function updateEditableList( departmentById: Map, Department>, departmentStaff: Staff[], descendants: Map, Department[]> @@ -165,7 +165,7 @@ editableList = editableList } - function updateStaff ( + function updateStaff( staff: Staff[], staffIdsForOpenedDepartments: Ref[], descendants: Map, Department[]>, @@ -228,7 +228,7 @@ } ) - function toHolidaysMap (holidays: PublicHoliday[]): Map, Date[]> { + function toHolidaysMap(holidays: PublicHoliday[]): Map, Date[]> { const group = groupBy(holidays, 'department') const result = new Map() for (const groupKey in group) { @@ -245,7 +245,7 @@ return result } - async function getHolidays (month: Date): Promise, Date[]>> { + async function getHolidays(month: Date): Promise, Date[]>> { const result = await client.findAll(hr.class.PublicHoliday, { 'date.month': month.getMonth(), 'date.year': month.getFullYear() @@ -255,7 +255,7 @@ const client = getClient() - async function getDepartmentsForEmployee (departmentStaff: Staff[]): Promise, Department[]>> { + async function getDepartmentsForEmployee(departmentStaff: Staff[]): Promise, Department[]>> { const map = new Map, Department[]>() if (departmentStaff && departmentStaff.length > 0) { const staffIds = departmentStaff.map((staff) => staff._id) @@ -274,7 +274,7 @@ staffDepartmentMap = res }) - function getDepartmentHolidays (department: Ref): Date[] { + function getDepartmentHolidays(department: Ref): Date[] { const parents = ancestors.get(department) ?? [] const result = new Map() diff --git a/plugins/hr-resources/src/components/Structure.svelte b/plugins/hr-resources/src/components/Structure.svelte index bec789bdbe..a11c383da9 100644 --- a/plugins/hr-resources/src/components/Structure.svelte +++ b/plugins/hr-resources/src/components/Structure.svelte @@ -25,11 +25,11 @@ let search = '' let resultQuery: DocumentQuery = {} - function updateResultQuery (search: string): void { + function updateResultQuery(search: string): void { resultQuery = search === '' ? {} : { $search: search } } - function showCreateDialog (ev: MouseEvent) { + function showCreateDialog(ev: MouseEvent) { showPopup(CreateDepartment, {}, eventToHTMLElement(ev)) } diff --git a/plugins/hr-resources/src/components/schedule/CreatePublicHoliday.svelte b/plugins/hr-resources/src/components/schedule/CreatePublicHoliday.svelte index eb7fb2b5be..418d08279e 100644 --- a/plugins/hr-resources/src/components/schedule/CreatePublicHoliday.svelte +++ b/plugins/hr-resources/src/components/schedule/CreatePublicHoliday.svelte @@ -31,7 +31,7 @@ let title: string let existingHoliday: PublicHoliday | undefined = undefined - async function getAncestors (department: Ref): Promise[]> { + async function getAncestors(department: Ref): Promise[]> { const departments = await client.findAll(hr.class.Department, {}) const byId = new Map, Ref>() for (const doc of departments) { @@ -49,7 +49,7 @@ return ancestors } - async function findHoliday (): Promise { + async function findHoliday(): Promise { const holidays = await client.findAll(hr.class.PublicHoliday, { date: timeToTzDate(date) }) // look into current department first @@ -68,7 +68,7 @@ } } - async function saveHoliday (): Promise { + async function saveHoliday(): Promise { if (existingHoliday !== undefined) { await client.updateDoc(hr.class.PublicHoliday, core.space.Workspace, existingHoliday._id, { title, @@ -90,7 +90,7 @@ loading = false }) - function deleteHoliday (): void { + function deleteHoliday(): void { if (existingHoliday !== undefined) { void client.remove(existingHoliday) } diff --git a/plugins/hr-resources/src/components/schedule/ExportPopup.svelte b/plugins/hr-resources/src/components/schedule/ExportPopup.svelte index 082c8b8242..a49f0e9adb 100644 --- a/plugins/hr-resources/src/components/schedule/ExportPopup.svelte +++ b/plugins/hr-resources/src/components/schedule/ExportPopup.svelte @@ -23,7 +23,7 @@ let selectedSeparator = items[0].id - function close (): void { + function close(): void { dispatch('close', selectedSeparator) } diff --git a/plugins/hr-resources/src/components/schedule/HolidayPresenter.svelte b/plugins/hr-resources/src/components/schedule/HolidayPresenter.svelte index 5be66567b6..24bcd4283e 100644 --- a/plugins/hr-resources/src/components/schedule/HolidayPresenter.svelte +++ b/plugins/hr-resources/src/components/schedule/HolidayPresenter.svelte @@ -19,7 +19,7 @@ export let month: Date export let display: (staff: Staff, month: Date) => number | string - // $: _value = display(value) + // $: _value = display(value) {#await display(value, month) then _value} diff --git a/plugins/hr-resources/src/components/schedule/MonthTableView.svelte b/plugins/hr-resources/src/components/schedule/MonthTableView.svelte index 2e109976cf..ede6fb0c02 100644 --- a/plugins/hr-resources/src/components/schedule/MonthTableView.svelte +++ b/plugins/hr-resources/src/components/schedule/MonthTableView.svelte @@ -53,7 +53,7 @@ export let staffDepartmentMap: Map, Department[]> - function getDateRange (request: Request, staff: Staff): string { + function getDateRange(request: Request, staff: Staff): string { const ds = getRequestDates( request, types, @@ -64,13 +64,13 @@ return ds.join(' ') } - function getStatRequests (employee: Ref, date: Date): Request[] { + function getStatRequests(employee: Ref, date: Date): Request[] { const endDate = getEndDate(date.getFullYear(), date.getMonth()) return getRequests(employeeRequests, date, endDate, employee) } - function getTypeVals (month: Date): Map { + function getTypeVals(month: Date): Map { return new Map( Array.from(types.values()).map((it) => [ it.label as string, @@ -92,7 +92,7 @@ ) } - async function getOverrideConfig (startDate: Date): Promise> { + async function getOverrideConfig(startDate: Date): Promise> { const holidays = await getHolidays(startDate) const typevals = getTypeVals(startDate) const endDate = getEndDate(startDate.getFullYear(), startDate.getMonth()) @@ -297,7 +297,7 @@ ]) } - async function createConfig ( + async function createConfig( descr: Viewlet, preference: ViewletPreference | undefined, month: Date diff --git a/plugins/hr-resources/src/components/schedule/MonthView.svelte b/plugins/hr-resources/src/components/schedule/MonthView.svelte index 315d79c048..458ca0060c 100644 --- a/plugins/hr-resources/src/components/schedule/MonthView.svelte +++ b/plugins/hr-resources/src/components/schedule/MonthView.svelte @@ -84,20 +84,20 @@ const noWeekendHolidayType: Ref[] = [hr.ids.PTO, hr.ids.PTO2, hr.ids.Vacation] - function checkConflict (request1: Request, request2: Request): boolean { + function checkConflict(request1: Request, request2: Request): boolean { return ( tzDateCompare(request1.tzDate, request2.tzDueDate) <= 0 && tzDateCompare(request1.tzDueDate, request2.tzDate) >= 0 ) } - function getMonthDate (request: Request): number { + function getMonthDate(request: Request): number { const year = currentDate.getFullYear() const month = currentDate.getMonth() return request.tzDate.year === year && request.tzDate.month === month ? request.tzDate.day : startDate.getDate() } - function getMonthDueDate (request: Request): number { + function getMonthDueDate(request: Request): number { const year = currentDate.getFullYear() const month = currentDate.getMonth() @@ -106,7 +106,7 @@ : endDate.getDate() } - function getOrderedEmployeeRequests (employee: Staff): Request[] { + function getOrderedEmployeeRequests(employee: Staff): Request[] { const requests = getRequests(employeeRequests, startDate, endDate, employee._id) requests.sort((a, b) => { const res = tzDateCompare(a.tzDate, b.tzDate) @@ -118,7 +118,7 @@ return requests } - function buildTimelineRows (departmentStaff: Staff[], employeeRequests: Map, Request[]>): TimelineRow[] { + function buildTimelineRows(departmentStaff: Staff[], employeeRequests: Map, Request[]>): TimelineRow[] { const res: TimelineRow[] = [] for (const employee of departmentStaff) { @@ -157,7 +157,7 @@ return res } - function createRequest (e: MouseEvent, date: Date, staff: Staff): void { + function createRequest(e: MouseEvent, date: Date, staff: Staff): void { if (!isEditable(staff)) return const readonly = editableList.length === 1 @@ -177,7 +177,7 @@ } const me = getCurrentAccount() - function isFutureDate () { + function isFutureDate() { const today = new Date(Date.now()) return ( currentDate >= today || @@ -185,11 +185,11 @@ ) } - function isEditable (employee: Staff): boolean { + function isEditable(employee: Staff): boolean { return editableList.includes(employee._id) && (isFutureDate() || me.role === AccountRole.Owner || isAdminUser()) } - function getTooltip (requests: Request[], day: Date, staff: Staff): LabelAndProps | undefined { + function getTooltip(requests: Request[], day: Date, staff: Staff): LabelAndProps | undefined { if (requests.length === 0) return const weekend = isWeekend(day) const holiday = @@ -203,30 +203,30 @@ } } - function setPublicHoliday (date: Date): void { + function setPublicHoliday(date: Date): void { showPopup(CreatePublicHoliday, { date: date.getTime(), department }) } - function getRowHeight (row: TimelineRow): number { + function getRowHeight(row: TimelineRow): number { const height = row.tracks.length * (eventHeightRem + eventMarginRem) - eventMarginRem + 2 return Math.max(height, minRowHeightRem) } - function getColumnWidth (gridWidth: number, currentDate: Date): number { + function getColumnWidth(gridWidth: number, currentDate: Date): number { const width = gridWidth / daysInMonth(currentDate) return Math.max(width, minColWidthRem) } - export function getCellStyle (): string { + export function getCellStyle(): string { return `width: ${columnWidthRem}rem;` } - export function getRowStyle (row: TimelineRow): string { + export function getRowStyle(row: TimelineRow): string { const height = getRowHeight(row) return `height: ${height}rem;` } - export function getElementStyle (element: TimelineElement, trackIndex: number): string { + export function getElementStyle(element: TimelineElement, trackIndex: number): string { const left = (element.date - 1) * columnWidthRem const top = trackIndex * (eventHeightRem + eventMarginRem) const width = columnWidthRem * element.length @@ -250,7 +250,7 @@ let rows: TimelineRow[] $: rows = buildTimelineRows(departmentStaff, employeeRequests) - function getClickHandler (day: Date, staff: Staff): (e: MouseEvent, day: Date, staff: Staff) => void { + function getClickHandler(day: Date, staff: Staff): (e: MouseEvent, day: Date, staff: Staff) => void { return (e) => { createRequest(e, day, staff) } diff --git a/plugins/hr-resources/src/components/schedule/ScheduleRequest.svelte b/plugins/hr-resources/src/components/schedule/ScheduleRequest.svelte index ef26dcd0a7..66925f2f28 100644 --- a/plugins/hr-resources/src/components/schedule/ScheduleRequest.svelte +++ b/plugins/hr-resources/src/components/schedule/ScheduleRequest.svelte @@ -25,17 +25,17 @@ const client = getClient() - async function getType (request: Request): Promise { + async function getType(request: Request): Promise { return await client.findOne(hr.class.RequestType, { _id: request.type }) } - function isAvailable (type: RequestType): boolean { + function isAvailable(type: RequestType): boolean { return type.value >= 0 } - function click (e: MouseEvent, request: Request) { + function click(e: MouseEvent, request: Request) { if (!editable) return closeTooltip() showMenu(e, { object: request }) diff --git a/plugins/hr-resources/src/components/schedule/StaffPresenter.svelte b/plugins/hr-resources/src/components/schedule/StaffPresenter.svelte index 7c9d662f6f..f1457384a2 100644 --- a/plugins/hr-resources/src/components/schedule/StaffPresenter.svelte +++ b/plugins/hr-resources/src/components/schedule/StaffPresenter.svelte @@ -25,7 +25,7 @@ const client = getClient() - async function getDepartment (staff: Staff): Promise { + async function getDepartment(staff: Staff): Promise { return await client.findOne(hr.class.Department, { _id: staff.department }) diff --git a/plugins/hr-resources/src/components/schedule/YearView.svelte b/plugins/hr-resources/src/components/schedule/YearView.svelte index 9fda6c2609..130b8d46f9 100644 --- a/plugins/hr-resources/src/components/schedule/YearView.svelte +++ b/plugins/hr-resources/src/components/schedule/YearView.svelte @@ -41,7 +41,7 @@ export let holidaysMap: Map, Date[]> export let staffDepartmentMap: Map, Department[]> - function getTooltip (requests: Request[]): LabelAndProps | undefined { + function getTooltip(requests: Request[]): LabelAndProps | undefined { if (requests.length === 0) return return { component: RequestsPopup, @@ -51,7 +51,7 @@ $: values = [...Array(12).keys()] - function getMonthName (date: Date): string { + function getMonthName(date: Date): string { return new Intl.DateTimeFormat('default', { month: 'long' }).format(date) } diff --git a/plugins/hr-resources/src/components/sidebar/DepartmentsHierarchy.svelte b/plugins/hr-resources/src/components/sidebar/DepartmentsHierarchy.svelte index 4e5aac26f2..ef4f91a638 100644 --- a/plugins/hr-resources/src/components/sidebar/DepartmentsHierarchy.svelte +++ b/plugins/hr-resources/src/components/sidebar/DepartmentsHierarchy.svelte @@ -31,11 +31,11 @@ const client = getClient() const dispatch = createEventDispatcher() - function getDescendants (department: Ref): Ref[] { + function getDescendants(department: Ref): Ref[] { return (descendants.get(department) ?? []).sort((a, b) => a.name.localeCompare(b.name)).map((p) => p._id) } - async function getActions (obj: Department): Promise { + async function getActions(obj: Department): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, obj, obj._class) for (const act of extraActions) { @@ -51,7 +51,7 @@ return result } - function handleDepartmentSelected (department: Ref): void { + function handleDepartmentSelected(department: Ref): void { dispatch('selected', department) } diff --git a/plugins/hr/.eslintrc.js b/plugins/hr/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/hr/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/hr/eslint.config.mjs b/plugins/hr/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/hr/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/hr/package.json b/plugins/hr/package.json index 40a6466949..7c7d71a122 100644 --- a/plugins/hr/package.json +++ b/plugins/hr/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/plugins/huly-mail-assets/.eslintrc.js b/plugins/huly-mail-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/huly-mail-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/huly-mail-assets/eslint.config.mjs b/plugins/huly-mail-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/huly-mail-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/huly-mail-assets/package.json b/plugins/huly-mail-assets/package.json index ea4c15c559..5886e45ea2 100644 --- a/plugins/huly-mail-assets/package.json +++ b/plugins/huly-mail-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/huly-mail-assets/src/lang.ts b/plugins/huly-mail-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/huly-mail-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/huly-mail-resources/.eslintrc.js b/plugins/huly-mail-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/huly-mail-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/huly-mail-resources/eslint.config.mjs b/plugins/huly-mail-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/huly-mail-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/huly-mail-resources/package.json b/plugins/huly-mail-resources/package.json index e2cca52f4f..2c1add7e08 100644 --- a/plugins/huly-mail-resources/package.json +++ b/plugins/huly-mail-resources/package.json @@ -20,22 +20,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/huly-mail-resources/src/components/Configure.svelte b/plugins/huly-mail-resources/src/components/Configure.svelte index 0c5b620c04..965c95ad2b 100644 --- a/plugins/huly-mail-resources/src/components/Configure.svelte +++ b/plugins/huly-mail-resources/src/components/Configure.svelte @@ -64,7 +64,7 @@ } }) - async function getSocialId (): Promise { + async function getSocialId(): Promise { if (selectedMailbox === undefined) { return undefined } @@ -75,7 +75,7 @@ return await accountClient.findSocialIdBySocialKey(socialKey) } - async function apply (): Promise { + async function apply(): Promise { if (selectedMailbox === undefined) { return } @@ -92,8 +92,8 @@ integration = isWorkspaceIntegration(integration) ? integration : await integrationClient.integrate(integration, getCurrentWorkspaceUuid(), { - email: selectedMailbox - }) + email: selectedMailbox + }) await integrationClient.updateConfig(integration, { spaceId: selectedSpace }) diff --git a/plugins/huly-mail/.eslintrc.js b/plugins/huly-mail/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/huly-mail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/huly-mail/eslint.config.mjs b/plugins/huly-mail/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/huly-mail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/huly-mail/package.json b/plugins/huly-mail/package.json index 6c7f1dfe7c..ef5cf443a0 100644 --- a/plugins/huly-mail/package.json +++ b/plugins/huly-mail/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/image-cropper-resources/.eslintrc.js b/plugins/image-cropper-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/image-cropper-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/image-cropper-resources/eslint.config.mjs b/plugins/image-cropper-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/image-cropper-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/image-cropper-resources/package.json b/plugins/image-cropper-resources/package.json index 6f6164de60..b443d8542e 100644 --- a/plugins/image-cropper-resources/package.json +++ b/plugins/image-cropper-resources/package.json @@ -20,22 +20,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/image-cropper-resources/src/components/Cropper.svelte b/plugins/image-cropper-resources/src/components/Cropper.svelte index f673bb66e1..f1ba9f31a2 100644 --- a/plugins/image-cropper-resources/src/components/Cropper.svelte +++ b/plugins/image-cropper-resources/src/components/Cropper.svelte @@ -23,7 +23,7 @@ let imgRef: HTMLImageElement let cropper: Cropper | undefined - async function init (image: Blob) { + async function init(image: Blob) { const bitmap = await createImageBitmap(image) const canvas = document.createElement('canvas') canvas.height = bitmap.height @@ -68,7 +68,7 @@ }) } - export async function crop () { + export async function crop() { if (cropper === undefined) { return } diff --git a/plugins/image-cropper/.eslintrc.js b/plugins/image-cropper/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/image-cropper/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/image-cropper/eslint.config.mjs b/plugins/image-cropper/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/image-cropper/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/image-cropper/package.json b/plugins/image-cropper/package.json index 7894cad3e8..adf41f1e44 100644 --- a/plugins/image-cropper/package.json +++ b/plugins/image-cropper/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/inbox-assets/eslint.config.mjs b/plugins/inbox-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/inbox-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/inbox-assets/package.json b/plugins/inbox-assets/package.json index a6d8794dfd..b814db232d 100644 --- a/plugins/inbox-assets/package.json +++ b/plugins/inbox-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/inbox-resources/eslint.config.mjs b/plugins/inbox-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/inbox-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/inbox-resources/package.json b/plugins/inbox-resources/package.json index 31ee56cb03..cc8dc6d621 100644 --- a/plugins/inbox-resources/package.json +++ b/plugins/inbox-resources/package.json @@ -17,25 +17,24 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/inbox-resources/src/components/InboxApplication.svelte b/plugins/inbox-resources/src/components/InboxApplication.svelte index 6c62fc2ad8..197c201fb6 100644 --- a/plugins/inbox-resources/src/components/InboxApplication.svelte +++ b/plugins/inbox-resources/src/components/InboxApplication.svelte @@ -61,7 +61,7 @@ let urlObjectId: Ref | undefined = undefined let urlObjectClass: Ref> | undefined = undefined - async function syncLocation (loc: Location): Promise { + async function syncLocation(loc: Location): Promise { if (loc.path[2] !== inboxId) { return } @@ -123,7 +123,7 @@ let selectedNotificationId: string | undefined = undefined - function select ( + function select( event: CustomEvent<{ navItem: NavigationItem doc: Doc @@ -158,7 +158,7 @@ navigateToDoc(navItem, ddoc, notification) } - function handleClose (): void { + function handleClose(): void { closePanel() doc = undefined legacyContext = undefined @@ -166,14 +166,14 @@ closeDoc() } - function isChunterChannel (_class: Ref>, urlObjectClass?: Ref>): boolean { + function isChunterChannel(_class: Ref>, urlObjectClass?: Ref>): boolean { const isActivityMessageContext = hierarchy.isDerived(_class, activity.class.ActivityMessage) const chunterClass = isActivityMessageContext ? (urlObjectClass ?? _class) : _class return hierarchy.isDerived(chunterClass, chunter.class.ChunterSpace) } $: void readLegacyDoc(doc, legacyContext, urlObjectClass) - async function readLegacyDoc ( + async function readLegacyDoc( doc: Doc | undefined, selectedContext?: DocNotifyContext, urlObjectClass?: Ref> diff --git a/plugins/inbox-resources/src/components/InboxCard.svelte b/plugins/inbox-resources/src/components/InboxCard.svelte index a00199e889..51eb094b2f 100644 --- a/plugins/inbox-resources/src/components/InboxCard.svelte +++ b/plugins/inbox-resources/src/components/InboxCard.svelte @@ -85,7 +85,7 @@ } let isRemoving = false - async function handleToggle (): Promise { + async function handleToggle(): Promise { isRemoving = true try { await navClient.remove(navItem) @@ -94,16 +94,16 @@ } } - function asCard (doc: Doc): Card { + function asCard(doc: Doc): Card { return doc as Card } - function onNotification (event: CustomEvent): void { + function onNotification(event: CustomEvent): void { if (doc == null) return dispatch('select', { doc, notification: event.detail }) } - function calcHeight (navItem: NavigationItem): number { + function calcHeight(navItem: NavigationItem): number { const base = 4.125 const messageHeightPx = 2 const reactionsHeightPx = 4 diff --git a/plugins/inbox-resources/src/components/InboxCardTitle.svelte b/plugins/inbox-resources/src/components/InboxCardTitle.svelte index 949872f389..f7ed0a0ab4 100644 --- a/plugins/inbox-resources/src/components/InboxCardTitle.svelte +++ b/plugins/inbox-resources/src/components/InboxCardTitle.svelte @@ -46,7 +46,7 @@ title = res }) - function asCard (doc: Doc): Card { + function asCard(doc: Doc): Card { return doc as Card } diff --git a/plugins/inbox-resources/src/components/InboxHeader.svelte b/plugins/inbox-resources/src/components/InboxHeader.svelte index 86d3d9070b..8c2a3999a5 100644 --- a/plugins/inbox-resources/src/components/InboxHeader.svelte +++ b/plugins/inbox-resources/src/components/InboxHeader.svelte @@ -37,7 +37,7 @@ let clearing = false let reading = false - async function clearInbox (): Promise { + async function clearInbox(): Promise { if (clearing || reading) return try { clearing = true @@ -53,7 +53,7 @@ } } - async function readInbox (): Promise { + async function readInbox(): Promise { if (reading || clearing) return try { reading = true @@ -69,11 +69,11 @@ } } - function click (e: MouseEvent): void { + function click(e: MouseEvent): void { showPopup(InboxViewSettings, {}, eventToHTMLElement(e)) } - async function onSelect (id?: 'clear' | 'read'): Promise { + async function onSelect(id?: 'clear' | 'read'): Promise { if (id == null) return if (id === 'clear') { diff --git a/plugins/inbox-resources/src/components/InboxNavigation.svelte b/plugins/inbox-resources/src/components/InboxNavigation.svelte index 58bc7c524c..9a732a6a79 100644 --- a/plugins/inbox-resources/src/components/InboxNavigation.svelte +++ b/plugins/inbox-resources/src/components/InboxNavigation.svelte @@ -53,7 +53,7 @@ let isPrevPageLoading = false - function handleScroll (): void { + function handleScroll(): void { if (divScroll != null && navClient.hasPrevPage() && !isPrevPageLoading) { const isAtBottom = divScroll.scrollTop + divScroll.clientHeight >= divScroll.scrollHeight - 10 if (isAtBottom) { @@ -67,7 +67,7 @@ const docById = new Map, Doc>() - async function onKeydown (key: KeyboardEvent): Promise { + async function onKeydown(key: KeyboardEvent): Promise { if (key.code === 'ArrowUp') { key.stopPropagation() key.preventDefault() @@ -105,7 +105,7 @@ contentDiv.focus() } - function getContextKey (index: number): string { + function getContextKey(index: number): string { const item = navItems[index] if (item == null) return index.toString() diff --git a/plugins/inbox-resources/src/components/InboxViewSettings.svelte b/plugins/inbox-resources/src/components/InboxViewSettings.svelte index 93ff3811a4..2ce2c7a3d0 100644 --- a/plugins/inbox-resources/src/components/InboxViewSettings.svelte +++ b/plugins/inbox-resources/src/components/InboxViewSettings.svelte @@ -32,7 +32,7 @@ let selection = 0 let list: ListView - export function onKeydown (key: KeyboardEvent): boolean { + export function onKeydown(key: KeyboardEvent): boolean { if (key.code === 'Tab') { dispatch('close') key.preventDefault() @@ -69,7 +69,7 @@ popupElement.focus() } - function onToggle (id: string): void { + function onToggle(id: string): void { updateViewSetting(id, !isViewSettingEnabled($viewSettingsStore, id)) } diff --git a/plugins/inbox-resources/src/components/ReactionNotification.svelte b/plugins/inbox-resources/src/components/ReactionNotification.svelte index 1dcbe8ae8e..09278658b8 100644 --- a/plugins/inbox-resources/src/components/ReactionNotification.svelte +++ b/plugins/inbox-resources/src/components/ReactionNotification.svelte @@ -32,7 +32,7 @@ let author: Person | undefined $: void updateAuthor(notification.creator) - async function updateAuthor (socialId: SocialID): Promise { + async function updateAuthor(socialId: SocialID): Promise { author = $employeeByPersonIdStore.get(socialId) if (author === undefined) { diff --git a/plugins/inbox-resources/src/components/legacy/ActivityInboxNotificationPresenter.svelte b/plugins/inbox-resources/src/components/legacy/ActivityInboxNotificationPresenter.svelte index bd15e1717a..4d6ce5485a 100644 --- a/plugins/inbox-resources/src/components/legacy/ActivityInboxNotificationPresenter.svelte +++ b/plugins/inbox-resources/src/components/legacy/ActivityInboxNotificationPresenter.svelte @@ -39,7 +39,7 @@ $: void updateDisplayMessage(value.combinedMessages) - async function updateDisplayMessage (messages: ActivityMessage[]): Promise { + async function updateDisplayMessage(messages: ActivityMessage[]): Promise { const combinedMessages = combineActivityMessages(sortActivityMessages(messages)) displayMessage = combinedMessages[0] @@ -47,7 +47,7 @@ $: updateViewlet(viewlets, displayMessage) - function matchViewlet (viewlet: ActivityNotificationViewlet, message: DisplayActivityMessage): boolean { + function matchViewlet(viewlet: ActivityNotificationViewlet, message: DisplayActivityMessage): boolean { const hierarchy = client.getHierarchy() const matched = matchQuery([message], viewlet.messageMatch, message._class, hierarchy, true)[0] if (matched !== undefined) return true @@ -65,7 +65,7 @@ return false } - function updateViewlet (viewlets: ActivityNotificationViewlet[], message?: DisplayActivityMessage): void { + function updateViewlet(viewlets: ActivityNotificationViewlet[], message?: DisplayActivityMessage): void { if (viewlets.length === 0 || message === undefined) { viewlet = undefined return diff --git a/plugins/inbox-resources/src/components/legacy/CommonInboxNotificationPresenter.svelte b/plugins/inbox-resources/src/components/legacy/CommonInboxNotificationPresenter.svelte index 7b31638d82..e20ca86a74 100644 --- a/plugins/inbox-resources/src/components/legacy/CommonInboxNotificationPresenter.svelte +++ b/plugins/inbox-resources/src/components/legacy/CommonInboxNotificationPresenter.svelte @@ -32,7 +32,7 @@ $: void updateContent(value.message, value.messageHtml) - async function updateContent (message?: IntlString, messageHtml?: Markup): Promise { + async function updateContent(message?: IntlString, messageHtml?: Markup): Promise { if (messageHtml !== undefined) { content = messageHtml } else if (message !== undefined) { diff --git a/plugins/inbox-resources/src/components/legacy/LegacyNotification.svelte b/plugins/inbox-resources/src/components/legacy/LegacyNotification.svelte index d04ff30d8b..08f15775e9 100644 --- a/plugins/inbox-resources/src/components/legacy/LegacyNotification.svelte +++ b/plugins/inbox-resources/src/components/legacy/LegacyNotification.svelte @@ -35,19 +35,19 @@ const client = getClient() const hierarchy = client.getHierarchy() - function asDisplayActivityNotification (notification: DisplayInboxNotification): DisplayActivityInboxNotification { + function asDisplayActivityNotification(notification: DisplayInboxNotification): DisplayActivityInboxNotification { return notification as DisplayActivityInboxNotification } - function asMentionNotification (notification: DisplayInboxNotification): MentionInboxNotification { + function asMentionNotification(notification: DisplayInboxNotification): MentionInboxNotification { return notification as MentionInboxNotification } - function asReactionNotification (notification: DisplayInboxNotification): ReactionInboxNotification { + function asReactionNotification(notification: DisplayInboxNotification): ReactionInboxNotification { return notification as ReactionInboxNotification } - function asCommonNotification (notification: DisplayInboxNotification): CommonInboxNotification { + function asCommonNotification(notification: DisplayInboxNotification): CommonInboxNotification { return notification as CommonInboxNotification } diff --git a/plugins/inbox-resources/src/location.ts b/plugins/inbox-resources/src/location.ts index 0a4f12c2f3..d63a9b412f 100644 --- a/plugins/inbox-resources/src/location.ts +++ b/plugins/inbox-resources/src/location.ts @@ -57,11 +57,11 @@ export function getDocInfoFromLocation (loc: Location): Pick | MessageID - date?: Date -} -| undefined { + | { + id: Ref | MessageID + date?: Date + } + | undefined { if (loc.path[2] !== inboxId) return undefined if (loc.query?.message == null || loc.query.message === '') return undefined @@ -207,12 +207,12 @@ export async function selectInboxContext ( doc?._id === objectId ? (doc as ThreadMessage) : await client.findOne( - chunter.class.ThreadMessage, - { - _id: objectId as Ref - }, - { projection: { _id: 1, attachedTo: 1 } } - ) + chunter.class.ThreadMessage, + { + _id: objectId as Ref + }, + { projection: { _id: 1, attachedTo: 1 } } + ) void navigateToInboxDoc( context._id, diff --git a/plugins/inbox-resources/src/type.ts b/plugins/inbox-resources/src/type.ts index 63e48a76e1..5d339bd4c0 100644 --- a/plugins/inbox-resources/src/type.ts +++ b/plugins/inbox-resources/src/type.ts @@ -18,17 +18,17 @@ import { type DisplayInboxNotification, type DocNotifyContext } from '@hcenginee export type NavigationItem = | { - type: 'modern' - _id: Ref - _class: Ref> - context: NotificationContext - date: Date - } + type: 'modern' + _id: Ref + _class: Ref> + context: NotificationContext + date: Date + } | { - type: 'legacy' - _id: Ref - _class: Ref> - context: DocNotifyContext - date: Date - notifications: DisplayInboxNotification[] - } + type: 'legacy' + _id: Ref + _class: Ref> + context: DocNotifyContext + date: Date + notifications: DisplayInboxNotification[] + } diff --git a/plugins/inbox/eslint.config.mjs b/plugins/inbox/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/inbox/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/inbox/package.json b/plugins/inbox/package.json index 6c716cc5b4..b33afd51f4 100644 --- a/plugins/inbox/package.json +++ b/plugins/inbox/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/integration/eslint.config.mjs b/plugins/integration/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/integration/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/inventory-assets/.eslintrc.js b/plugins/inventory-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/inventory-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/inventory-assets/eslint.config.mjs b/plugins/inventory-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/inventory-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/inventory-assets/package.json b/plugins/inventory-assets/package.json index 520b0b3e35..5d9e8fe7a5 100644 --- a/plugins/inventory-assets/package.json +++ b/plugins/inventory-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/inventory-assets/src/lang.ts b/plugins/inventory-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/inventory-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/inventory-resources/.eslintrc.js b/plugins/inventory-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/inventory-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/inventory-resources/eslint.config.mjs b/plugins/inventory-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/inventory-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/inventory-resources/package.json b/plugins/inventory-resources/package.json index a747f7778c..4e316affd8 100644 --- a/plugins/inventory-resources/package.json +++ b/plugins/inventory-resources/package.json @@ -20,22 +20,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/inventory-resources/src/components/Categories.svelte b/plugins/inventory-resources/src/components/Categories.svelte index 0198656c62..dd1a388bb2 100644 --- a/plugins/inventory-resources/src/components/Categories.svelte +++ b/plugins/inventory-resources/src/components/Categories.svelte @@ -25,11 +25,11 @@ let search = '' let resultQuery: DocumentQuery = {} - function updateResultQuery (search: string): void { + function updateResultQuery(search: string): void { resultQuery = search === '' ? {} : { $search: search } } - function showCreateDialog () { + function showCreateDialog() { showPopup(CreateCategory, { space: core.space.Workspace }, 'top') } diff --git a/plugins/inventory-resources/src/components/CreateCategory.svelte b/plugins/inventory-resources/src/components/CreateCategory.svelte index f5beae8012..5e4cb3ad03 100644 --- a/plugins/inventory-resources/src/components/CreateCategory.svelte +++ b/plugins/inventory-resources/src/components/CreateCategory.svelte @@ -32,11 +32,11 @@ const client = getClient() const inventoryId = generateId() - export function canClose (): boolean { + export function canClose(): boolean { return name !== '' } - async function create () { + async function create() { const value: AttachedData = { name } diff --git a/plugins/inventory-resources/src/components/CreateProduct.svelte b/plugins/inventory-resources/src/components/CreateProduct.svelte index db1c8fb5aa..6f3fe2893c 100644 --- a/plugins/inventory-resources/src/components/CreateProduct.svelte +++ b/plugins/inventory-resources/src/components/CreateProduct.svelte @@ -36,11 +36,11 @@ const dispatch = createEventDispatcher() const client = getClient() - export function canClose (): boolean { + export function canClose(): boolean { return doc.attachedTo.length === 0 && doc.name.length === 0 } - async function create () { + async function create() { const categoryInstance = await client.findOne(inventory.class.Category, { _id: doc.attachedTo as Ref }) if (categoryInstance === undefined) { throw new Error('category not found') diff --git a/plugins/inventory-resources/src/components/CreateVariant.svelte b/plugins/inventory-resources/src/components/CreateVariant.svelte index 7e671815fb..e2a0e64342 100644 --- a/plugins/inventory-resources/src/components/CreateVariant.svelte +++ b/plugins/inventory-resources/src/components/CreateVariant.svelte @@ -39,11 +39,11 @@ const dispatch = createEventDispatcher() const client = getClient() - export function canClose (): boolean { + export function canClose(): boolean { return doc.attachedTo.length === 0 && doc.name.length === 0 } - async function create () { + async function create() { const productInstance = await client.findOne(inventory.class.Product, { _id: doc.attachedTo as Ref }) if (productInstance === undefined) { throw new Error('product not found') diff --git a/plugins/inventory-resources/src/components/HierarchyElement.svelte b/plugins/inventory-resources/src/components/HierarchyElement.svelte index 6d792557af..b2fdcb9df4 100644 --- a/plugins/inventory-resources/src/components/HierarchyElement.svelte +++ b/plugins/inventory-resources/src/components/HierarchyElement.svelte @@ -29,7 +29,7 @@ export let parent: Ref = inventory.global.Category let expanded: Set> = new Set>() - function click (id: Ref): void { + function click(id: Ref): void { if (!descendants.has(id)) return if (expanded.has(id)) { expanded.delete(id) diff --git a/plugins/inventory-resources/src/components/HierarchyView.svelte b/plugins/inventory-resources/src/components/HierarchyView.svelte index 0e86bce391..581719ae47 100644 --- a/plugins/inventory-resources/src/components/HierarchyView.svelte +++ b/plugins/inventory-resources/src/components/HierarchyView.svelte @@ -32,7 +32,7 @@ const q = createQuery() - async function update (_class: Ref>, query: DocumentQuery, options?: FindOptions) { + async function update(_class: Ref>, query: DocumentQuery, options?: FindOptions) { q.query( _class, query, @@ -45,7 +45,7 @@ } $: update(_class, query, options) - function updateDescendants (): void { + function updateDescendants(): void { descendants.clear() for (const doc of objects) { const current = descendants.get(doc.attachedTo) diff --git a/plugins/inventory/.eslintrc.js b/plugins/inventory/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/inventory/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/inventory/eslint.config.mjs b/plugins/inventory/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/inventory/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/inventory/package.json b/plugins/inventory/package.json index db6c6cd0eb..59bc648bdc 100644 --- a/plugins/inventory/package.json +++ b/plugins/inventory/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/lead-assets/.eslintrc.js b/plugins/lead-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/lead-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/lead-assets/eslint.config.mjs b/plugins/lead-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/lead-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/lead-assets/package.json b/plugins/lead-assets/package.json index 432fd527f1..8f10f78d53 100644 --- a/plugins/lead-assets/package.json +++ b/plugins/lead-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/lead-assets/src/lang.ts b/plugins/lead-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/lead-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/lead-resources/.eslintrc.js b/plugins/lead-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/lead-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/lead-resources/eslint.config.mjs b/plugins/lead-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/lead-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/lead-resources/package.json b/plugins/lead-resources/package.json index e4e001daf7..fc4d7bef6c 100644 --- a/plugins/lead-resources/package.json +++ b/plugins/lead-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/lead-resources/src/components/CreateCustomer.svelte b/plugins/lead-resources/src/components/CreateCustomer.svelte index f2ef95ccdd..a652101d33 100644 --- a/plugins/lead-resources/src/components/CreateCustomer.svelte +++ b/plugins/lead-resources/src/components/CreateCustomer.svelte @@ -50,7 +50,7 @@ let lastName = '' let description = EmptyMarkup - export function canClose (): boolean { + export function canClose(): boolean { return firstName === '' && lastName === '' } @@ -67,11 +67,11 @@ let channels: AttachedData[] = [] let avatar: File | undefined - function formatName (targetClass: Ref>, firstName: string, lastName: string, objectName: string): string { + function formatName(targetClass: Ref>, firstName: string, lastName: string, objectName: string): string { return targetClass === contact.class.Person ? combineName(firstName.trim(), lastName.trim()) : objectName } - async function createCustomer (): Promise { + async function createCustomer(): Promise { const candidate: Data = { name, city: object.city, @@ -128,7 +128,7 @@ ] let targetClass = targets[0] - function selectTarget (evt: MouseEvent): void { + function selectTarget(evt: MouseEvent): void { showPopup( SelectPopup, { diff --git a/plugins/lead-resources/src/components/CreateFunnel.svelte b/plugins/lead-resources/src/components/CreateFunnel.svelte index f498685ac4..df4b15c090 100644 --- a/plugins/lead-resources/src/components/CreateFunnel.svelte +++ b/plugins/lead-resources/src/components/CreateFunnel.svelte @@ -58,12 +58,12 @@ $: membersPersons = members.map((m) => $employeeRefByAccountUuidStore.get(m)).filter(notEmpty) $: readOnlyGuestOwnerExcludeItems = getAnonymousRefs($employeeRefByAccountUuidStore, owners) $: void loadSpaceType(typeId) - async function loadSpaceType (id: typeof typeId): Promise { + async function loadSpaceType(id: typeof typeId): Promise { spaceType = id !== undefined ? await client - .getModel() - .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) + .getModel() + .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) : undefined if (spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { @@ -75,7 +75,7 @@ $: roles = (spaceType?.$lookup?.roles ?? []) as Role[] - function getRolesAssignment (): RolesAssignment { + function getRolesAssignment(): RolesAssignment { if (funnel === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { return {} } @@ -89,11 +89,11 @@ }, {}) } - export function canClose (): boolean { + export function canClose(): boolean { return name === '' && typeId !== undefined } - async function createFunnel (): Promise { + async function createFunnel(): Promise { if (typeId === undefined || spaceType?.targetClass === undefined) { return } @@ -114,7 +114,7 @@ Analytics.handleEvent(LeadEvents.FunnelCreated, { id: funnelId }) } - async function save (): Promise { + async function save(): Promise { if (isNew) { await createFunnel() } else if (funnel !== undefined && spaceType?.targetClass !== undefined) { @@ -136,14 +136,14 @@ } } - function handleOwnersChanged (newOwners: AccountUuid[]): void { + function handleOwnersChanged(newOwners: AccountUuid[]): void { owners = newOwners const newMembersSet = new Set([...members, ...newOwners]) members = Array.from(newMembersSet) } - function handleMembersChanged (newMembers: AccountUuid[]): void { + function handleMembersChanged(newMembers: AccountUuid[]): void { membersChanged = true // If a member was removed we need to remove it from any roles assignments as well const newMembersSet = new Set(newMembers) @@ -158,7 +158,7 @@ members = newMembers } - function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): void { + function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): void { if (rolesAssignment === undefined) { rolesAssignment = {} } @@ -175,7 +175,7 @@ let membersChanged: boolean = false - function setDefaultMembers (typeType: SpaceType | undefined): void { + function setDefaultMembers(typeType: SpaceType | undefined): void { if (typeType === undefined) return if (membersChanged) return if (funnel !== undefined) return diff --git a/plugins/lead-resources/src/components/CreateLead.svelte b/plugins/lead-resources/src/components/CreateLead.svelte index 092bdbee06..375c363cdd 100644 --- a/plugins/lead-resources/src/components/CreateLead.svelte +++ b/plugins/lead-resources/src/components/CreateLead.svelte @@ -51,7 +51,7 @@ const client = getClient() const leadId: Ref = generateId() - export function canClose (): boolean { + export function canClose(): boolean { return (preserveCustomer || customer === undefined) && title === '' } @@ -66,7 +66,7 @@ $: setStatus(rawStates, object.status) - function setStatus (rawStates: TaskStatus[], status: Ref | undefined) { + function setStatus(rawStates: TaskStatus[], status: Ref | undefined) { if (status === undefined || rawStates.findIndex((it) => it._id === status) === -1) { state = rawStates[0]?._id object.status = state @@ -83,7 +83,7 @@ let kind: Ref | undefined = undefined - async function createLead () { + async function createLead() { const sequence = await client.findOne(core.class.Sequence, { attachedTo: lead.class.Lead }) if (sequence === undefined || customer == null) { throw new Error('Lead creation failed') diff --git a/plugins/lead-resources/src/components/EditFunnel.svelte b/plugins/lead-resources/src/components/EditFunnel.svelte index 638363792c..7265178c7c 100644 --- a/plugins/lead-resources/src/components/EditFunnel.svelte +++ b/plugins/lead-resources/src/components/EditFunnel.svelte @@ -39,7 +39,7 @@ const query = createQuery() - function updateObject (_id: Ref): void { + function updateObject(_id: Ref): void { query.query(lead.class.Funnel, { _id }, (result) => { object = result[0] as Required rawName = object.name @@ -49,7 +49,7 @@ $: updateObject(_id) - function onChange (key: string, value: any): void { + function onChange(key: string, value: any): void { client.updateDoc(object._class, object.space, object._id, { [key]: value }) } diff --git a/plugins/lead-resources/src/components/EditLead.svelte b/plugins/lead-resources/src/components/EditLead.svelte index 1e3559c67e..baa7e9f4fb 100644 --- a/plugins/lead-resources/src/components/EditLead.svelte +++ b/plugins/lead-resources/src/components/EditLead.svelte @@ -36,7 +36,7 @@ rawTitle = object.title } - function change (field: string, value: any) { + function change(field: string, value: any) { client.updateDoc(object._class, object.space, object._id, { [field]: value }) } diff --git a/plugins/lead-resources/src/components/KanbanCard.svelte b/plugins/lead-resources/src/components/KanbanCard.svelte index e1c01959d3..577ddb8d07 100644 --- a/plugins/lead-resources/src/components/KanbanCard.svelte +++ b/plugins/lead-resources/src/components/KanbanCard.svelte @@ -39,7 +39,7 @@ const client = getClient() const assigneeAttribute = client.getHierarchy().getAttribute(lead.class.Lead, 'assignee') - function showLead () { + function showLead() { openDoc(client.getHierarchy(), object) } diff --git a/plugins/lead-resources/src/components/MyLeads.svelte b/plugins/lead-resources/src/components/MyLeads.svelte index 3c807092a5..2343a9a328 100644 --- a/plugins/lead-resources/src/components/MyLeads.svelte +++ b/plugins/lead-resources/src/components/MyLeads.svelte @@ -59,14 +59,14 @@ $: mode = $resolvedLocationStore.query?.mode ?? undefined let searchQuery: DocumentQuery = { ...(baseQuery ?? {}) } - function updateSearchQuery (search: string): void { + function updateSearchQuery(search: string): void { searchQuery = search === '' ? { ...baseQuery } : { ...baseQuery, $search: search } } $: if (baseQuery) updateSearchQuery(search) $: resultQuery = { ...searchQuery } const subscribedQuery = createQuery() - function getSubscribed () { + function getSubscribed() { subscribedQuery.query( _class, { 'notification:mixin:Collaborators.collaborators': myAcc.uuid }, diff --git a/plugins/lead-resources/src/components/NewItemsHeader.svelte b/plugins/lead-resources/src/components/NewItemsHeader.svelte index 3b9354347e..96568c8e5a 100644 --- a/plugins/lead-resources/src/components/NewItemsHeader.svelte +++ b/plugins/lead-resources/src/components/NewItemsHeader.svelte @@ -21,7 +21,7 @@ const client = getClient() - async function newIssue (): Promise { + async function newIssue(): Promise { showPopup(CreateCustomer, {}, 'top') } diff --git a/plugins/lead/.eslintrc.js b/plugins/lead/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/lead/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/lead/eslint.config.mjs b/plugins/lead/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/lead/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/lead/package.json b/plugins/lead/package.json index 2da0537588..74892478d2 100644 --- a/plugins/lead/package.json +++ b/plugins/lead/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/plugins/login-assets/.eslintrc.js b/plugins/login-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/login-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/login-assets/eslint.config.mjs b/plugins/login-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/login-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/login-assets/package.json b/plugins/login-assets/package.json index 5da2694bba..81fad27b47 100644 --- a/plugins/login-assets/package.json +++ b/plugins/login-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/login-assets/src/lang.ts b/plugins/login-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/login-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/login-resources/.eslintrc.js b/plugins/login-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/login-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/login-resources/eslint.config.mjs b/plugins/login-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/login-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/login-resources/package.json b/plugins/login-resources/package.json index 97ddd21f2d..d851891e1d 100644 --- a/plugins/login-resources/package.json +++ b/plugins/login-resources/package.json @@ -20,23 +20,22 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", "url-loader": "~4.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/login-resources/src/components/AdminWorkspaces.svelte b/plugins/login-resources/src/components/AdminWorkspaces.svelte index c096980caa..6f647859e4 100644 --- a/plugins/login-resources/src/components/AdminWorkspaces.svelte +++ b/plugins/login-resources/src/components/AdminWorkspaces.svelte @@ -51,7 +51,7 @@ let search: string = '' - async function select (workspace: string): Promise { + async function select(workspace: string): Promise { const url = locationToUrl({ path: [workbenchId, workspace] }) window.open(url, '_blank') } @@ -95,7 +95,7 @@ let showSelectedRegionOnly: boolean = false let showInactive = false - function isWorkspaceInactive (it: WorkspaceInfo, stats: WorkspaceStatistics | undefined): boolean { + function isWorkspaceInactive(it: WorkspaceInfo, stats: WorkspaceStatistics | undefined): boolean { if (stats === undefined) { return true } @@ -112,7 +112,7 @@ return false } - function getBackupSize (workspace: WorkspaceInfo): number { + function getBackupSize(workspace: WorkspaceInfo): number { return Math.max( workspace.backupInfo?.backupSize ?? 0, (workspace.backupInfo?.dataSize ?? 0) + (workspace.backupInfo?.blobsSize ?? 0) @@ -166,7 +166,7 @@ const endpoint = getMetadata(presentation.metadata.StatsUrl) - async function fetchStats (time: number): Promise { + async function fetchStats(time: number): Promise { await fetch(endpoint + `/api/v1/overview?token=${token}`, {}) .then(async (json) => { data = await json.json() @@ -327,11 +327,11 @@ void loadAccounts(accountSearch, accountSkip, accountLimit) - async function deleteAccount (uuid: AccountUuid): Promise { + async function deleteAccount(uuid: AccountUuid): Promise { await accountClient.deleteAccount(uuid) } - async function accountSearchChanged (ev: CustomEvent): Promise { + async function accountSearchChanged(ev: CustomEvent): Promise { accountSkip = 0 await loadAccounts(ev.detail, accountSkip, accountLimit) } diff --git a/plugins/login-resources/src/components/Auth.svelte b/plugins/login-resources/src/components/Auth.svelte index 94b46b40ed..da11004fe4 100644 --- a/plugins/login-resources/src/components/Auth.svelte +++ b/plugins/login-resources/src/components/Auth.svelte @@ -59,7 +59,7 @@ await handleLoginInfo(result) }) - async function handleLoginInfo (result: LoginInfoByToken): Promise { + async function handleLoginInfo(result: LoginInfoByToken): Promise { if (result == null) { goTo('login', true) } else if (isLoginInfoRequest(result)) { diff --git a/plugins/login-resources/src/components/AutoJoin.svelte b/plugins/login-resources/src/components/AutoJoin.svelte index 5ff072f731..40aef06f8e 100644 --- a/plugins/login-resources/src/components/AutoJoin.svelte +++ b/plugins/login-resources/src/components/AutoJoin.svelte @@ -41,13 +41,13 @@ $: void updateSubtitle(name, $themeStore.language) - async function updateSubtitle (name: string, language: string): Promise { + async function updateSubtitle(name: string, language: string): Promise { if (name != null && name !== '') { subtitle = await translate(login.string.Hello, { name }, language) } } - async function check (): Promise { + async function check(): Promise { if (location.query?.inviteId == null || (location.query?.firstName == null && location.query?.token == null)) return if (location.query?.token != null) { @@ -95,7 +95,7 @@ } } - async function onLogin (loginInfo: LoginInfo | null): Promise { + async function onLogin(loginInfo: LoginInfo | null): Promise { if (loginInfo?.token == null) { return } diff --git a/plugins/login-resources/src/components/Confirmation.svelte b/plugins/login-resources/src/components/Confirmation.svelte index 6955b40fbf..7c0e35cb4a 100644 --- a/plugins/login-resources/src/components/Confirmation.svelte +++ b/plugins/login-resources/src/components/Confirmation.svelte @@ -23,7 +23,7 @@ export let status: Status = OK - async function check (): Promise { + async function check(): Promise { const location = getCurrentLocation() if (location.query?.id === undefined || location.query?.id === null) return status = new Status(Severity.INFO, login.status.ConnectingToServer, {}) diff --git a/plugins/login-resources/src/components/ConfirmationSend.svelte b/plugins/login-resources/src/components/ConfirmationSend.svelte index 97e59dc218..54efc01737 100644 --- a/plugins/login-resources/src/components/ConfirmationSend.svelte +++ b/plugins/login-resources/src/components/ConfirmationSend.svelte @@ -22,7 +22,7 @@ let checkHandle: number | undefined let mounted = false - async function checkAccountStatus (): Promise { + async function checkAccountStatus(): Promise { const loginInfo = await getAccount(false) if (loginInfo?.token != null) { @@ -30,7 +30,7 @@ } } - async function check (): Promise { + async function check(): Promise { try { await checkAccountStatus() } catch (e) { diff --git a/plugins/login-resources/src/components/Form.svelte b/plugins/login-resources/src/components/Form.svelte index 396d3d08ec..5b8f7f42fb 100644 --- a/plugins/login-resources/src/components/Form.svelte +++ b/plugins/login-resources/src/components/Form.svelte @@ -52,7 +52,7 @@ export let actionButtonDataId: string | undefined = undefined export let secondaryButtonDataId: string | undefined = undefined - const validate = makeSequential(async function validateAsync (language: string): Promise { + const validate = makeSequential(async function validateAsync(language: string): Promise { if (ignoreInitialValidation || isLoading) return true for (const field of fields) { @@ -93,7 +93,7 @@ return true }) - export function invalidate (): void { + export function invalidate(): void { void validate($themeStore.language) } @@ -108,7 +108,7 @@ let inAction = false - function performAction (action: Action): void { + function performAction(action: Action): void { if (inAction) return for (const field of fields) { @@ -121,7 +121,7 @@ } onMount(() => (ignoreInitialValidation = false)) - function trim (field: string): void { + function trim(field: string): void { object[field] = (object[field] as string).trim() } diff --git a/plugins/login-resources/src/components/InviteLink.svelte b/plugins/login-resources/src/components/InviteLink.svelte index 16dec932b3..d3a3cdce08 100644 --- a/plugins/login-resources/src/components/InviteLink.svelte +++ b/plugins/login-resources/src/components/InviteLink.svelte @@ -59,13 +59,13 @@ } }) - function setToDefault (): void { + function setToDefault(): void { expHours = defaultValues.expirationTime emailMask = defaultValues.emailMask limit = defaultValues.limit } - async function getLink (expHours: number, mask: string, limit: number | undefined, role: AccountRole): Promise { + async function getLink(expHours: number, mask: string, limit: number | undefined, role: AccountRole): Promise { loading = true link = await getInviteLink(expHours, mask, limit ?? -1, role) loading = false @@ -78,7 +78,7 @@ copied = false } - async function copy (): Promise { + async function copy(): Promise { if (!isSecureContext) return if (link === undefined) return @@ -117,7 +117,7 @@ let link: string | undefined let loading = false - function handleInviteRoleSelected (e: CustomEvent): void { + function handleInviteRoleSelected(e: CustomEvent): void { role = e.detail link = undefined } diff --git a/plugins/login-resources/src/components/Join.svelte b/plugins/login-resources/src/components/Join.svelte index 57d7c362a7..dc64c5bfe4 100644 --- a/plugins/login-resources/src/components/Join.svelte +++ b/plugins/login-resources/src/components/Join.svelte @@ -95,19 +95,19 @@ const [loginStatus, result] = page === 'login' ? await join( - object.username, - object.password, - location.query?.inviteId ?? '', - location.query?.workspace ?? '' - ) + object.username, + object.password, + location.query?.inviteId ?? '', + location.query?.workspace ?? '' + ) : await signUpJoin( - object.username, - object.password, - object.first, - object.last, - location.query?.inviteId ?? '', - location.query?.workspace ?? '' - ) + object.username, + object.password, + object.first, + object.last, + location.query?.inviteId ?? '', + location.query?.workspace ?? '' + ) status = loginStatus if (result != null) { @@ -145,7 +145,7 @@ void check() }) - async function check (): Promise { + async function check(): Promise { if (location.query?.inviteId === undefined || location.query?.inviteId === null) { checking = false return @@ -192,7 +192,7 @@ checking = false } - async function handleJoinWithThisAccount (): Promise { + async function handleJoinWithThisAccount(): Promise { const inviteId = location.query?.inviteId if (inviteId == null) return joiningWithAccount = true @@ -222,13 +222,13 @@ } } - function handleUseDifferentAccount (): void { + function handleUseDifferentAccount(): void { setMetadata(presentation.metadata.Token, null) showJoinWithAccount = false page = 'login' } - async function handleUseCurrentAccountToJoin (): Promise { + async function handleUseCurrentAccountToJoin(): Promise { try { if (currentAccountName == null) { console.error('Current account is not found') diff --git a/plugins/login-resources/src/components/LoginApp.svelte b/plugins/login-resources/src/components/LoginApp.svelte index 2af6f572bd..f063df0184 100644 --- a/plugins/login-resources/src/components/LoginApp.svelte +++ b/plugins/login-resources/src/components/LoginApp.svelte @@ -65,7 +65,7 @@ onDestroy(location.subscribe(updatePageLoc)) - function updatePageLoc (loc: Location): void { + function updatePageLoc(loc: Location): void { const token = getMetadata(presentation.metadata.Token) page = (loc.path[1] as Pages) ?? (token != null ? 'selectWorkspace' : 'login') if (page === 'join' && loc.query?.autoJoin !== undefined) { @@ -93,7 +93,7 @@ tfaToken = loc.query?.token ?? undefined } - async function chooseToken (): Promise { + async function chooseToken(): Promise { if (page === 'auth') { // token handled by auth page return diff --git a/plugins/login-resources/src/components/LoginAppBase.svelte b/plugins/login-resources/src/components/LoginAppBase.svelte index 30f031e72c..3f0691f707 100644 --- a/plugins/login-resources/src/components/LoginAppBase.svelte +++ b/plugins/login-resources/src/components/LoginAppBase.svelte @@ -46,7 +46,7 @@ $: activeTheme = $loginTheme // themeStyle resolves to override theme vars when override is active, otherwise to store theme vars - function onDevThemeChange (e: Event): void { + function onDevThemeChange(e: Event): void { const v = (e.target as HTMLSelectElement).value as LoginThemeName // set local override and apply accent class immediately (no store change) setLoginTheme(v) diff --git a/plugins/login-resources/src/components/LoginForm.svelte b/plugins/login-resources/src/components/LoginForm.svelte index 02b752ec4b..c3d9009045 100644 --- a/plugins/login-resources/src/components/LoginForm.svelte +++ b/plugins/login-resources/src/components/LoginForm.svelte @@ -52,7 +52,7 @@ }) }) - function changeMethod (event: CustomEvent): void { + function changeMethod(event: CustomEvent): void { method = event.detail } @@ -70,7 +70,7 @@ } } - async function guestLogin (): Promise { + async function guestLogin(): Promise { let status = new Status(Severity.INFO, login.status.ConnectingToServer, {}) const [loginStatus, result] = await doLoginAsGuest() status = loginStatus diff --git a/plugins/login-resources/src/components/LoginOtpForm.svelte b/plugins/login-resources/src/components/LoginOtpForm.svelte index 48319683f1..eb03b57d8b 100644 --- a/plugins/login-resources/src/components/LoginOtpForm.svelte +++ b/plugins/login-resources/src/components/LoginOtpForm.svelte @@ -57,7 +57,7 @@ } } - function handleStep (event: CustomEvent): void { + function handleStep(event: CustomEvent): void { step = event.detail } diff --git a/plugins/login-resources/src/components/OtpForm.svelte b/plugins/login-resources/src/components/OtpForm.svelte index 44a71b308a..70139f8bfa 100644 --- a/plugins/login-resources/src/components/OtpForm.svelte +++ b/plugins/login-resources/src/components/OtpForm.svelte @@ -60,11 +60,11 @@ let formElement: HTMLFormElement | undefined - function trim (field: string): void { + function trim(field: string): void { otpData[field] = otpData[field].trim() } - async function validateOtp (): Promise { + async function validateOtp(): Promise { status = new Status(Severity.INFO, login.status.ConnectingToServer, {}) const otp = otpData.otp1 + otpData.otp2 + otpData.otp3 + otpData.otp4 + otpData.otp5 + otpData.otp6 @@ -84,7 +84,7 @@ } } - function onInput (e: Event): void { + function onInput(e: Event): void { if (e.target == null) return const target = e.target as HTMLInputElement @@ -115,7 +115,7 @@ } } - function clearOtpData (): void { + function clearOtpData(): void { Object.keys(otpData).forEach((key) => { otpData[key] = '' }) @@ -126,7 +126,7 @@ } } - function onKeydown (e: KeyboardEvent): void { + function onKeydown(e: KeyboardEvent): void { const key = e.key.toLowerCase() const target = e.target as HTMLInputElement @@ -150,7 +150,7 @@ } } - function onPaste (e: ClipboardEvent): void { + function onPaste(e: ClipboardEvent): void { e.preventDefault() if (e.clipboardData == null) return @@ -159,7 +159,7 @@ pasteOtpCode(text) } - function pasteOtpCode (text: string): boolean { + function pasteOtpCode(text: string): boolean { const digits = text.split('').filter((it) => it !== ' ') if (digits.length !== fields.length) { @@ -203,7 +203,7 @@ } }) - async function resendCode (): Promise { + async function resendCode(): Promise { status = new Status(Severity.INFO, login.status.ConnectingToServer, {}) const [otpStatus, result] = await loginOtp(email) status = otpStatus diff --git a/plugins/login-resources/src/components/Providers.svelte b/plugins/login-resources/src/components/Providers.svelte index a2d8f3663a..ff39b6c3c5 100644 --- a/plugins/login-resources/src/components/Providers.svelte +++ b/plugins/login-resources/src/components/Providers.svelte @@ -37,7 +37,7 @@ }) }) - function getColumnsCount (providersCount: number): number { + function getColumnsCount(providersCount: number): number { if ($deviceOptionsStore.isMobile) { return 1 } @@ -46,7 +46,7 @@ const location = getCurrentLocation() - function getLink (provider: Provider): string { + function getLink(provider: Provider): string { const inviteId = location.query?.inviteId const autoJoin = location.query?.autoJoin !== undefined const navigateUrl = location.query?.navigateUrl @@ -65,7 +65,7 @@ return concatLink(accountsUrl, path) } - function handleProviderClick (provider: Provider): void { + function handleProviderClick(provider: Provider): void { const currentPath = location.path[1] const isSignUp = currentPath === 'signup' const isJoin = currentPath === 'join' diff --git a/plugins/login-resources/src/components/SelectWorkspace.svelte b/plugins/login-resources/src/components/SelectWorkspace.svelte index 357e7a3015..590e4a9312 100644 --- a/plugins/login-resources/src/components/SelectWorkspace.svelte +++ b/plugins/login-resources/src/components/SelectWorkspace.svelte @@ -61,14 +61,14 @@ let flagToUpdateWorkspaces = false - async function loadAccount (): Promise { + async function loadAccount(): Promise { accountPromise = getAccount() account = await accountPromise isReadOnlyGuest = await isReadOnlyGuestAccount(account) } // eslint-disable-next-line @typescript-eslint/no-unused-vars - const updateWorkspaces = reduceCalls(async function updateWorkspaces (_time?: number): Promise { + const updateWorkspaces = reduceCalls(async function updateWorkspaces(_time?: number): Promise { try { workspaces = await getWorkspaces() } catch (e) { @@ -84,7 +84,7 @@ void loadAccount() }) - async function select (workspaceUrl: string): Promise { + async function select(workspaceUrl: string): Promise { status = new Status(Severity.INFO, login.status.ConnectingToServer, {}) const [loginStatus, result] = await selectWorkspace(workspaceUrl) @@ -117,7 +117,7 @@ navigateToWorkspace(workspaceUrl, result, navigateUrl) } - async function _getWorkspaces (): Promise { + async function _getWorkspaces(): Promise { try { const res = await getWorkspaces() diff --git a/plugins/login-resources/src/components/SignupForm.svelte b/plugins/login-resources/src/components/SignupForm.svelte index d0eaba04dd..9a897e63b5 100644 --- a/plugins/login-resources/src/components/SignupForm.svelte +++ b/plugins/login-resources/src/components/SignupForm.svelte @@ -126,7 +126,7 @@ } } - function handleStep (event: CustomEvent): void { + function handleStep(event: CustomEvent): void { step = event.detail } diff --git a/plugins/login/.eslintrc.js b/plugins/login/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/login/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/login/eslint.config.mjs b/plugins/login/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/login/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/login/package.json b/plugins/login/package.json index 2582ea9435..38773130bf 100644 --- a/plugins/login/package.json +++ b/plugins/login/package.json @@ -23,19 +23,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@hcengineering/account-client": "workspace:^0.7.25" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@hcengineering/account-client": "workspace:^0.7.25", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/login/src/index.ts b/plugins/login/src/index.ts index 2c08b6c6bd..62265ca7e9 100644 --- a/plugins/login/src/index.ts +++ b/plugins/login/src/index.ts @@ -109,24 +109,24 @@ export default plugin(loginId, { SendInvite: '' as Resource<(email: string, role: AccountRole) => Promise>, ResendInvite: '' as Resource<(email: string, role: AccountRole) => Promise>, GetInviteLink: '' as Resource< - ( - expHours: number, - mask: string, - limit: number | undefined, - role: AccountRole, - navigateUrl?: string - ) => Promise + ( + expHours: number, + mask: string, + limit: number | undefined, + role: AccountRole, + navigateUrl?: string + ) => Promise >, LeaveWorkspace: '' as Resource<(account: string) => Promise>, CheckHasPassword: '' as Resource<() => Promise>, ChangePassword: '' as Resource<(oldPassword: string, password: string) => Promise>, RequestPasswordSetup: '' as Resource<() => Promise>, SelectWorkspace: '' as Resource< - ( - workspace: string, - token: string | null | undefined, - doNavigate?: boolean | undefined // Default to true - ) => Promise<[Status, WorkspaceLoginInfo | undefined, boolean]> + ( + workspace: string, + token: string | null | undefined, + doNavigate?: boolean | undefined // Default to true + ) => Promise<[Status, WorkspaceLoginInfo | undefined, boolean]> >, ExchangeGuestToken: '' as Resource<(token: string) => Promise>, FetchWorkspace: '' as Resource<() => Promise<[Status, WorkspaceInfoWithStatus | undefined, boolean]>>, diff --git a/plugins/love-assets/.eslintrc.js b/plugins/love-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/love-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/love-assets/eslint.config.mjs b/plugins/love-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/love-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/love-assets/package.json b/plugins/love-assets/package.json index 17da245f4a..6132e3fd0c 100644 --- a/plugins/love-assets/package.json +++ b/plugins/love-assets/package.json @@ -26,20 +26,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier-plugin-svelte": "^3.4.0", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -55,8 +55,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/love-assets/src/lang.ts b/plugins/love-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/love-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/love-resources/.eslintrc.js b/plugins/love-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/love-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/love-resources/eslint.config.mjs b/plugins/love-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/love-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/love-resources/package.json b/plugins/love-resources/package.json index 15d2bb3f84..8a28822d1d 100644 --- a/plugins/love-resources/package.json +++ b/plugins/love-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/plugins/love-resources/src/components/AddRoomPopup.svelte b/plugins/love-resources/src/components/AddRoomPopup.svelte index 622315cfcd..be76596725 100644 --- a/plugins/love-resources/src/components/AddRoomPopup.svelte +++ b/plugins/love-resources/src/components/AddRoomPopup.svelte @@ -46,7 +46,7 @@ } ] as const - async function createRoom (value: TypeIds): Promise { + async function createRoom(value: TypeIds): Promise { const val = items.find((i) => i.id === value) if (val === undefined) return const client = getClient() @@ -85,7 +85,7 @@ dispatch('close') } - async function createFloor (): Promise { + async function createFloor(): Promise { const client = getClient() const name = await translate(love.string.Floor, {}) const _id = await client.createDoc(love.class.Floor, core.space.Workspace, { name }) diff --git a/plugins/love-resources/src/components/EditFloorPopup.svelte b/plugins/love-resources/src/components/EditFloorPopup.svelte index 985aeab02e..32eeb88d21 100644 --- a/plugins/love-resources/src/components/EditFloorPopup.svelte +++ b/plugins/love-resources/src/components/EditFloorPopup.svelte @@ -19,10 +19,10 @@ }) } - async function createFloor (): Promise { + async function createFloor(): Promise { await client.createDoc(love.class.Floor, core.space.Workspace, { name }) } - async function updateFloor (): Promise { + async function updateFloor(): Promise { if (id === undefined) return await client.updateDoc(love.class.Floor, core.space.Workspace, id, { name }) } diff --git a/plugins/love-resources/src/components/EditMeetingData.svelte b/plugins/love-resources/src/components/EditMeetingData.svelte index 096e77aec8..b2677242fb 100644 --- a/plugins/love-resources/src/components/EditMeetingData.svelte +++ b/plugins/love-resources/src/components/EditMeetingData.svelte @@ -43,7 +43,7 @@ meetingDoc = r.shift() }) - async function resetMeeting (meetingDoc: MeetingMinutes): Promise { + async function resetMeeting(meetingDoc: MeetingMinutes): Promise { if (meetingDoc.status === MeetingStatus.Active || meetingDoc.status === MeetingStatus.Pending) { // Disallow change for active meeting return diff --git a/plugins/love-resources/src/components/EditMeetingMinutes.svelte b/plugins/love-resources/src/components/EditMeetingMinutes.svelte index de38ae7248..a96704eb91 100644 --- a/plugins/love-resources/src/components/EditMeetingMinutes.svelte +++ b/plugins/love-resources/src/components/EditMeetingMinutes.svelte @@ -43,7 +43,7 @@ currentTitle = object.title } - async function changeTitle (): Promise { + async function changeTitle(): Promise { await client.diffUpdate(object, { title: newTitle }) } @@ -56,13 +56,13 @@ $: hasPendingJoinInThisSession = $myConnectingSessionId !== null && $myConnectingSessionId === currentSessionId && $lkIsConnecting - async function connect (): Promise { + async function connect(): Promise { await joinMeeting(object) } $: connectLabel = object.status !== MeetingStatus.Scheduled ? love.string.JoinMeeting : love.string.StartMeeting - function showConnectionButton (object: MeetingMinutes, connecting: boolean, isConnected: boolean): boolean { + function showConnectionButton(object: MeetingMinutes, connecting: boolean, isConnected: boolean): boolean { if (object.status === MeetingStatus.Finished) { return false } @@ -74,7 +74,7 @@ return true } - function getInfo (mm: Ref, info: ParticipantInfo[]): ParticipantInfo[] { + function getInfo(mm: Ref, info: ParticipantInfo[]): ParticipantInfo[] { return info.filter((p) => p.meeting === mm) } diff --git a/plugins/love-resources/src/components/EditMeetingScheduleData.svelte b/plugins/love-resources/src/components/EditMeetingScheduleData.svelte index 53ac6d2d07..511b08f97e 100644 --- a/plugins/love-resources/src/components/EditMeetingScheduleData.svelte +++ b/plugins/love-resources/src/components/EditMeetingScheduleData.svelte @@ -27,7 +27,7 @@ $: isMeetingSchedule = client.getHierarchy().hasMixin(value, love.mixin.MeetingSchedule) $: meetingSchedule = isMeetingSchedule ? client.getHierarchy().as(value, love.mixin.MeetingSchedule) : null - async function changeRoom (val: Ref): Promise { + async function changeRoom(val: Ref): Promise { const schedules = await client.findAll(value._class, { _id: value._id }, { projection: { _id: 1 } }) for (const schedule of schedules) { await client.updateMixin(schedule._id, schedule._class, schedule.space, love.mixin.MeetingSchedule, { room: val }) diff --git a/plugins/love-resources/src/components/EditRoom.svelte b/plugins/love-resources/src/components/EditRoom.svelte index 196f02035e..c5f18cb100 100644 --- a/plugins/love-resources/src/components/EditRoom.svelte +++ b/plugins/love-resources/src/components/EditRoom.svelte @@ -43,7 +43,7 @@ dispatch('open', { ignoreKeys: ['name'] }) }) - async function connect (): Promise { + async function connect(): Promise { const mm = get(meetings).find((it) => it.attachedTo === object._id) if (mm !== undefined) { await joinMeeting(mm) @@ -54,7 +54,7 @@ let connectLabel: IntlString | undefined - async function updateConnecting (object: Room, infos: ParticipantInfo[], isLocalConnecting: boolean): Promise { + async function updateConnecting(object: Room, infos: ParticipantInfo[], isLocalConnecting: boolean): Promise { connecting = isLocalConnecting || ($currentRoom?._id === object._id && !$lkSessionConnected) let _connectLabel: IntlString = infos.some(({ room }) => room === object._id) @@ -75,7 +75,7 @@ $: void updateConnecting(object, $infos, hasPendingJoinInThisSession) - function showConnectionButton ( + function showConnectionButton( object: Room, connecting: boolean, isConnected: boolean, @@ -102,7 +102,7 @@ return true } - function getInfo (room: Ref, info: ParticipantInfo[]): ParticipantInfo[] { + function getInfo(room: Ref, info: ParticipantInfo[]): ParticipantInfo[] { return info.filter((p) => p.room === room) } diff --git a/plugins/love-resources/src/components/Floor.svelte b/plugins/love-resources/src/components/Floor.svelte index 50cb3e77d2..588c1e95d7 100644 --- a/plugins/love-resources/src/components/Floor.svelte +++ b/plugins/love-resources/src/components/Floor.svelte @@ -47,7 +47,7 @@ return { id: p._id, label: p.name } }) - function changeFloor (event: CustomEvent>) { + function changeFloor(event: CustomEvent>) { if (event.detail) { selectedFloor.set(event.detail) } diff --git a/plugins/love-resources/src/components/FloorConfigure.svelte b/plugins/love-resources/src/components/FloorConfigure.svelte index 661d6811f0..7b2b941a7b 100644 --- a/plugins/love-resources/src/components/FloorConfigure.svelte +++ b/plugins/love-resources/src/components/FloorConfigure.svelte @@ -70,7 +70,7 @@ let cursor: string = '' $: document.body.style.cursor = cursor - async function updateRoom (id: Ref): Promise { + async function updateRoom(id: Ref): Promise { if (locked !== undefined && resizeInitParams !== undefined) { const room = rooms.find((r) => r._id === id) if (room === undefined) { @@ -95,7 +95,7 @@ } } - function addRoom (e: MouseEvent): void { + function addRoom(e: MouseEvent): void { showPopup(AddRoomPopup, { floor }, eventToHTMLElement(e)) } @@ -107,7 +107,7 @@ else if (roomsConf[lockedID]) roomsConf[lockedID].setShadowColor(r, g, b, a) } - function startDragRoom (room: Room, size: DOMRect, n: number): void { + function startDragRoom(room: Room, size: DOMRect, n: number): void { if (room === undefined || size === undefined) return const map: boolean[][] = getFreeSpace(rooms, room, true) locked = { room, size, map } @@ -117,7 +117,7 @@ window.addEventListener('mouseup', docMouseUp) } - function dragMouseMove (e: MouseEvent): void { + function dragMouseMove(e: MouseEvent): void { if ($lockedRoom === '' || block || dragged === undefined || locked === undefined) return block = true if (!dragShadow && dragged && dragRoom) { @@ -152,7 +152,7 @@ block = false } - function startResizeRoom (room: Room, size: DOMRect, side: RoomSide, n: number): void { + function startResizeRoom(room: Room, size: DOMRect, side: RoomSide, n: number): void { if (room === undefined || size === undefined || side === undefined) return const map: boolean[][] = getFreeSpace(rooms, room) locked = { room, size, map, side } @@ -161,7 +161,7 @@ window.addEventListener('mouseup', docMouseUp) } - function resizeMouseMove (e: MouseEvent): void { + function resizeMouseMove(e: MouseEvent): void { if ($lockedRoom === '' || locked?.room === undefined || locked.side === undefined || block) return block = true const error: RoomSide = { top: false, bottom: false, left: false, right: false } @@ -271,7 +271,7 @@ block = false } - function docMouseUp (e: MouseEvent): void { + function docMouseUp(e: MouseEvent): void { if (locked) updateRoom(locked.room._id) if (dragged !== undefined) { divScroll.removeEventListener('mousemove', dragMouseMove) @@ -288,7 +288,7 @@ } $: rows = calculateFloorSize(rooms) + 2 - function changeFloor (event: CustomEvent>) { + function changeFloor(event: CustomEvent>) { if (event.detail) { selectedFloor.set(event.detail) } diff --git a/plugins/love-resources/src/components/FloorPreview.svelte b/plugins/love-resources/src/components/FloorPreview.svelte index 34d9da17f4..5c77e37136 100644 --- a/plugins/love-resources/src/components/FloorPreview.svelte +++ b/plugins/love-resources/src/components/FloorPreview.svelte @@ -57,13 +57,13 @@ let floorContainer: HTMLDivElement let hovered: number = -1 - function getInfo (room: Ref, info: ParticipantInfo[]): ParticipantInfo[] { + function getInfo(room: Ref, info: ParticipantInfo[]): ParticipantInfo[] { return info.filter((p) => p.room === room) } let roomName: IntlString | undefined = undefined - function hover (e: CustomEvent, n: number): void { + function hover(e: CustomEvent, n: number): void { roomName = e.detail.name hovered = n } @@ -73,11 +73,11 @@ const client = getClient() - async function remove (): Promise { + async function remove(): Promise { await client.remove(floor) } - function renameFloor (): void { + function renameFloor(): void { showPopup(EditFloorPopup, { id: floor._id }, 'top', () => { pressed = false }) diff --git a/plugins/love-resources/src/components/FloorView.svelte b/plugins/love-resources/src/components/FloorView.svelte index d565a2edca..4eaa62123b 100644 --- a/plugins/love-resources/src/components/FloorView.svelte +++ b/plugins/love-resources/src/components/FloorView.svelte @@ -25,7 +25,7 @@ let floorContainer: HTMLDivElement - function getInfo (room: Ref, info: ParticipantInfo[]): ParticipantInfo[] { + function getInfo(room: Ref, info: ParticipantInfo[]): ParticipantInfo[] { return info.filter((p) => p.room === room) } diff --git a/plugins/love-resources/src/components/Hall.svelte b/plugins/love-resources/src/components/Hall.svelte index 5f586ffd16..fdadceeecf 100644 --- a/plugins/love-resources/src/components/Hall.svelte +++ b/plugins/love-resources/src/components/Hall.svelte @@ -22,7 +22,7 @@ import Floor from './Floor.svelte' import FloorConfigure from './FloorConfigure.svelte' - function getRooms (rooms: Room[], floor: Ref): Room[] { + function getRooms(rooms: Room[], floor: Ref): Room[] { return rooms.filter((p) => p.floor === floor) } diff --git a/plugins/love-resources/src/components/LoveWidget.svelte b/plugins/love-resources/src/components/LoveWidget.svelte index da1939a5d4..4355d821f4 100644 --- a/plugins/love-resources/src/components/LoveWidget.svelte +++ b/plugins/love-resources/src/components/LoveWidget.svelte @@ -29,11 +29,11 @@ floor = $floors[0] } - function getRooms (rooms: Room[], floor: Ref): Room[] { + function getRooms(rooms: Room[], floor: Ref): Room[] { return rooms.filter((p) => p.floor === floor) } - function addFloor (e: MouseEvent): void { + function addFloor(e: MouseEvent): void { showPopup(EditFloorPopup, {}, eventToHTMLElement(e)) } diff --git a/plugins/love-resources/src/components/MediaPopupItemExt.svelte b/plugins/love-resources/src/components/MediaPopupItemExt.svelte index bb0ba8db99..d59717358f 100644 --- a/plugins/love-resources/src/components/MediaPopupItemExt.svelte +++ b/plugins/love-resources/src/components/MediaPopupItemExt.svelte @@ -20,20 +20,20 @@ $: allowLeave = $myInfo !== undefined && !isMyOffice && $myInfo.room !== love.ids.Reception let leaving = false - async function handleLeaveClick (): Promise { + async function handleLeaveClick(): Promise { leaving = true await leaveMeeting() dispatch('close') } let ending = false - async function handleEndMeetingClick (): Promise { + async function handleEndMeetingClick(): Promise { ending = true await leaveMeeting() dispatch('close') } - async function stopShare (): Promise { + async function stopShare(): Promise { await liveKitClient.setScreenShareEnabled(false) } diff --git a/plugins/love-resources/src/components/MeetingData.svelte b/plugins/love-resources/src/components/MeetingData.svelte index 014a2db5dd..5ac58b9800 100644 --- a/plugins/love-resources/src/components/MeetingData.svelte +++ b/plugins/love-resources/src/components/MeetingData.svelte @@ -23,11 +23,11 @@ export let state: Writable> - function changeRoom (val: Ref): void { + function changeRoom(val: Ref): void { $state.room = val } - function changeIsMeeting (val: boolean): void { + function changeIsMeeting(val: boolean): void { $state.isMeeting = val } diff --git a/plugins/love-resources/src/components/MeetingScheduleData.svelte b/plugins/love-resources/src/components/MeetingScheduleData.svelte index fce3b375b4..fec1ee2686 100644 --- a/plugins/love-resources/src/components/MeetingScheduleData.svelte +++ b/plugins/love-resources/src/components/MeetingScheduleData.svelte @@ -20,7 +20,7 @@ export let state: Writable> - function changeRoom (val: Ref): void { + function changeRoom(val: Ref): void { $state.room = val } diff --git a/plugins/love-resources/src/components/ParticipantsPreview.svelte b/plugins/love-resources/src/components/ParticipantsPreview.svelte index 34816e3c8d..af7af903fa 100644 --- a/plugins/love-resources/src/components/ParticipantsPreview.svelte +++ b/plugins/love-resources/src/components/ParticipantsPreview.svelte @@ -21,7 +21,7 @@ export let info: ParticipantInfo[] - async function getPerson (info: Ref | undefined): Promise { + async function getPerson(info: Ref | undefined): Promise { if (info === undefined) { return } diff --git a/plugins/love-resources/src/components/Room.svelte b/plugins/love-resources/src/components/Room.svelte index cebcf0cf43..fc14cef615 100644 --- a/plugins/love-resources/src/components/Room.svelte +++ b/plugins/love-resources/src/components/Room.svelte @@ -103,7 +103,7 @@ }) } - function updateStyle (count: number, screenSharing: boolean): void { + function updateStyle(count: number, screenSharing: boolean): void { columns = screenSharing ? 1 : Math.min(Math.ceil(Math.sqrt(count)), 8) rows = Math.ceil(count / columns) gridStyle = `grid-template-columns: repeat(${columns}, 1fr); aspect-ratio: ${columns * 1280}/${rows * 720};` @@ -111,7 +111,7 @@ const handleFullScreen = () => ($isFullScreen = document.fullscreenElement != null) - function checkFullscreen (): void { + function checkFullscreen(): void { const needFullScreen = $isFullScreen if (document.fullscreenElement && !needFullScreen) { document @@ -136,7 +136,7 @@ } } - function onFullScreen (): void { + function onFullScreen(): void { const needFullScreen = !$isFullScreen if (!document.fullscreenElement && needFullScreen && roomEl != null) { roomEl diff --git a/plugins/love-resources/src/components/RoomAccessPopup.svelte b/plugins/love-resources/src/components/RoomAccessPopup.svelte index 723445d238..707bebab17 100644 --- a/plugins/love-resources/src/components/RoomAccessPopup.svelte +++ b/plugins/love-resources/src/components/RoomAccessPopup.svelte @@ -9,7 +9,7 @@ const client = getClient() const dispatch = createEventDispatcher() - async function setAccess (access: RoomAccess): Promise { + async function setAccess(access: RoomAccess): Promise { await client.update(room, { access }) dispatch('close', access) } diff --git a/plugins/love-resources/src/components/RoomConfigure.svelte b/plugins/love-resources/src/components/RoomConfigure.svelte index 7f7ff97a04..80e46d570f 100644 --- a/plugins/love-resources/src/components/RoomConfigure.svelte +++ b/plugins/love-resources/src/components/RoomConfigure.svelte @@ -41,11 +41,11 @@ const SHADOW_BLUR = 2 const SHADOW_SPREAD = -1 - async function updateName (): Promise { + async function updateName(): Promise { await client.update(room, { name: room.name }) } - async function changePerson (e: CustomEvent | null>): Promise { + async function changePerson(e: CustomEvent | null>): Promise { if (isOffice(room)) { const value = e.detail const prevValue = room.person @@ -65,7 +65,7 @@ } } - async function remove (): Promise { + async function remove(): Promise { await client.remove(room) } @@ -84,26 +84,26 @@ const shadow = tweened({ x: 0, y: 0, r: 0, s: 0 }, { duration: 150, easing: cubicOut }) const shadowColor = tweened(shadowNormal, { duration: 300, easing: cubicOut }) - export function setShadow (x: number, y: number, r: number, s?: number) { + export function setShadow(x: number, y: number, r: number, s?: number) { shadow.set({ x, y, r, s: s ?? 0 }) } - export function setShadowColor (r: number, g: number, b: number, a: number) { + export function setShadowColor(r: number, g: number, b: number, a: number) { shadowColor.set({ r, g, b, a }) } - export function clearShadow () { + export function clearShadow() { shadow.set({ x: 0, y: 0, r: 1, s: 0 }) shadowColor.set({ ...shadowNormal, a: 0 }) } - export function getRect (): DOMRect { + export function getRect(): DOMRect { return container ? container.getBoundingClientRect() : new DOMRect() } - function checkLeave () { + function checkLeave() { if ($lockedRoom !== '') return cursor = '' clearShadow() } - function mouseDown (e: MouseEvent): void { + function mouseDown(e: MouseEvent): void { if (container === undefined || $lockedRoom !== '') return roomRect = container.getBoundingClientRect() if (roomSide.top || roomSide.bottom || roomSide.left || roomSide.right) { @@ -121,7 +121,7 @@ lockedRoom.set(room._id) } - function changeCursor (e: MouseEvent): void { + function changeCursor(e: MouseEvent): void { if ($lockedRoom !== '') return roomRect = container.getBoundingClientRect() const offsetX = e.clientX - roomRect.x + cellSize / 5 diff --git a/plugins/love-resources/src/components/RoomLanguageEditor.svelte b/plugins/love-resources/src/components/RoomLanguageEditor.svelte index 274724a88e..4080b5fbe1 100644 --- a/plugins/love-resources/src/components/RoomLanguageEditor.svelte +++ b/plugins/love-resources/src/components/RoomLanguageEditor.svelte @@ -34,7 +34,7 @@ iconProps: { lang } })) - function showLanguagesPopup (ev: MouseEvent): void { + function showLanguagesPopup(ev: MouseEvent): void { shown = true showPopup(DropdownLabelsPopupIntl, { items, selected: value }, eventToHTMLElement(ev), async (result) => { if (result != null && result !== '') { diff --git a/plugins/love-resources/src/components/RoomLanguageSelector.svelte b/plugins/love-resources/src/components/RoomLanguageSelector.svelte index cd9b2c2b5b..f6bdcf1e44 100644 --- a/plugins/love-resources/src/components/RoomLanguageSelector.svelte +++ b/plugins/love-resources/src/components/RoomLanguageSelector.svelte @@ -39,13 +39,13 @@ iconProps: { lang } })) - async function handleSelection (newLang?: RoomLanguage): Promise { + async function handleSelection(newLang?: RoomLanguage): Promise { if (newLang == null) return await client.diffUpdate(room, { language: newLang }) } - function showLanguagesPopup (): void { + function showLanguagesPopup(): void { showPopup(DropdownLabelsPopupIntl, { items, selected: selectedItem }, container, async (result) => { if (result != null && result !== '') { selectedItem = result diff --git a/plugins/love-resources/src/components/RoomPopup.svelte b/plugins/love-resources/src/components/RoomPopup.svelte index 753ffc5490..d8ec5bc60b 100644 --- a/plugins/love-resources/src/components/RoomPopup.svelte +++ b/plugins/love-resources/src/components/RoomPopup.svelte @@ -38,7 +38,7 @@ export let meeting: MeetingMinutes const client = getClient() - async function getPerson (info: ParticipantInfo | undefined): Promise { + async function getPerson(info: ParticipantInfo | undefined): Promise { if (info === undefined) { return null } @@ -55,12 +55,12 @@ const dispatch = createEventDispatcher() - async function connect (): Promise { + async function connect(): Promise { await createMeeting(room, meeting) dispatch('close') } - async function backOrOpen (): Promise { + async function backOrOpen(): Promise { if (meeting !== undefined) { const hierarchy = client.getHierarchy() const panelComponent = hierarchy.classHierarchyMixin(meeting._class as Ref>, view.mixin.ObjectPanel) @@ -72,7 +72,7 @@ } } - function canGoBack (joined: boolean, location: Location, meetingMinutes?: MeetingMinutes): boolean { + function canGoBack(joined: boolean, location: Location, meetingMinutes?: MeetingMinutes): boolean { if (!joined) return false if (location.path[2] !== loveId) return true if (meetingMinutes === undefined) return false diff --git a/plugins/love-resources/src/components/RoomPreview.svelte b/plugins/love-resources/src/components/RoomPreview.svelte index cf00095ba2..327c7b4427 100644 --- a/plugins/love-resources/src/components/RoomPreview.svelte +++ b/plugins/love-resources/src/components/RoomPreview.svelte @@ -37,7 +37,7 @@ const dispatch = createEventDispatcher() - function prepareInfo (info: ParticipantInfo[]): ParticipantInfo[] { + function prepareInfo(info: ParticipantInfo[]): ParticipantInfo[] { const result: ParticipantInfo[] = [] const posMap = new Set() @@ -89,7 +89,7 @@ let personPopupVisible: Ref | undefined = undefined - async function getPerson (info: Ref | undefined): Promise { + async function getPerson(info: Ref | undefined): Promise { if (info === undefined) { return } @@ -97,20 +97,20 @@ return (await getPersonByPersonRef(info)) ?? undefined } - function getPersonInfo (y: number, x: number, info: ParticipantInfo[]): Omit | undefined { + function getPersonInfo(y: number, x: number, info: ParticipantInfo[]): Omit | undefined { return info.find((p) => p.x === x && p.y === y) } - function mouseEnter (): void { + function mouseEnter(): void { hovered = true dispatch('hover', { name: roomLabel }) } - function mouseLeave (): void { + function mouseLeave(): void { hovered = false } - async function openRoom (x: number, y: number): Promise { + async function openRoom(x: number, y: number): Promise { const client = getClient() const hierarchy = client.getHierarchy() if ($lkSessionConnected && $currentRoom?._id === room._id) { @@ -133,7 +133,7 @@ } } - async function placeClickHandler (e: MouseEvent, x: number, y: number): Promise { + async function placeClickHandler(e: MouseEvent, x: number, y: number): Promise { e.stopPropagation() e.preventDefault() @@ -170,7 +170,7 @@ $: extraRow = calcExtraRows(hovered, room, _info, $myInfo) - function calcExtraRows ( + function calcExtraRows( hovered: boolean, room: Room, info: ParticipantInfo[], @@ -206,7 +206,7 @@ return init } - async function handleClick (): Promise { + async function handleClick(): Promise { await openRoom(0, 0) } diff --git a/plugins/love-resources/src/components/RoomSelector.svelte b/plugins/love-resources/src/components/RoomSelector.svelte index 912e8e5f7f..c2e4b9a13d 100644 --- a/plugins/love-resources/src/components/RoomSelector.svelte +++ b/plugins/love-resources/src/components/RoomSelector.svelte @@ -52,7 +52,7 @@ $: selectedRoom = $rooms.find((p) => p._id === value) $: selected = selectedRoom !== undefined ? makeRoomItem(selectedRoom, true) : undefined - function makeRoomItem (room: Room, forSelected: boolean): { _id: string, label: string } { + function makeRoomItem(room: Room, forSelected: boolean): { _id: string, label: string } { const item = { _id: room._id, label: room.name } if (isOffice(room)) { if (room.person === currentPersonId) { @@ -102,7 +102,7 @@ return item } - function change (id: Ref): void { + function change(id: Ref): void { if (value !== id) { dispatch('change', id) value = id diff --git a/plugins/love-resources/src/components/RoomSettingsPopup.svelte b/plugins/love-resources/src/components/RoomSettingsPopup.svelte index 155b6cb0f9..64e7151e92 100644 --- a/plugins/love-resources/src/components/RoomSettingsPopup.svelte +++ b/plugins/love-resources/src/components/RoomSettingsPopup.svelte @@ -35,7 +35,7 @@ let selectedGroup = groups[0] - function selectGroup (group: Group): void { + function selectGroup(group: Group): void { selectedGroup = group } diff --git a/plugins/love-resources/src/components/RoomTranscriptionSettings.svelte b/plugins/love-resources/src/components/RoomTranscriptionSettings.svelte index 34911afc1b..50e1904d5f 100644 --- a/plugins/love-resources/src/components/RoomTranscriptionSettings.svelte +++ b/plugins/love-resources/src/components/RoomTranscriptionSettings.svelte @@ -21,11 +21,11 @@ const client = getClient() - async function toggleTranscribing (): Promise { + async function toggleTranscribing(): Promise { await client.diffUpdate(room, { startWithTranscription: !room.startWithTranscription }) } - async function toggleRecording (): Promise { + async function toggleRecording(): Promise { await client.diffUpdate(room, { startWithRecording: !room.startWithRecording }) } diff --git a/plugins/love-resources/src/components/Settings.svelte b/plugins/love-resources/src/components/Settings.svelte index 17d70f25e2..805f04df57 100644 --- a/plugins/love-resources/src/components/Settings.svelte +++ b/plugins/love-resources/src/components/Settings.svelte @@ -9,7 +9,7 @@ const client = getClient() - async function saveMicPreference (myPreferences: DevicesPreference | undefined, value: boolean): Promise { + async function saveMicPreference(myPreferences: DevicesPreference | undefined, value: boolean): Promise { if (myPreferences !== undefined) { await client.update(myPreferences, { micEnabled: !value }) } else { @@ -24,7 +24,7 @@ } } - async function saveCamPreference (myPreferences: DevicesPreference | undefined, value: boolean): Promise { + async function saveCamPreference(myPreferences: DevicesPreference | undefined, value: boolean): Promise { if (myPreferences !== undefined) { await client.update(myPreferences, { camEnabled: !value }) } else { @@ -39,7 +39,7 @@ } } - async function saveNoiseCancellationPreference ( + async function saveNoiseCancellationPreference( myPreferences: DevicesPreference | undefined, value: boolean ): Promise { @@ -58,7 +58,7 @@ await liveKitClient.applyNoiseCancellation(value) } - async function saveSpeakingWhileMutedPreference ( + async function saveSpeakingWhileMutedPreference( myPreferences: DevicesPreference | undefined, value: boolean ): Promise { diff --git a/plugins/love-resources/src/components/SharingStateIndicator.svelte b/plugins/love-resources/src/components/SharingStateIndicator.svelte index c605160954..9c08af755d 100644 --- a/plugins/love-resources/src/components/SharingStateIndicator.svelte +++ b/plugins/love-resources/src/components/SharingStateIndicator.svelte @@ -24,14 +24,14 @@ let pressed: boolean = false - function handleShowPopup (ev: MouseEvent): void { + function handleShowPopup(ev: MouseEvent): void { pressed = true showPopup(SharingStatePopup, {}, eventToHTMLElement(ev), () => { pressed = false }) } - function handleShare (): void { + function handleShare(): void { if ($screenSharingState !== ScreenSharingState.Inactive) return void liveKitClient.setScreenShareEnabled(true, $isShareWithSound) } diff --git a/plugins/love-resources/src/components/SharingStatePopup.svelte b/plugins/love-resources/src/components/SharingStatePopup.svelte index 1d091d147c..6fba6d07a9 100644 --- a/plugins/love-resources/src/components/SharingStatePopup.svelte +++ b/plugins/love-resources/src/components/SharingStatePopup.svelte @@ -53,7 +53,7 @@ } } - function handleStop (): void { + function handleStop(): void { void liveKitClient.setScreenShareEnabled(false) dispatch('close') } diff --git a/plugins/love-resources/src/components/WorkbenchExtension.svelte b/plugins/love-resources/src/components/WorkbenchExtension.svelte index 0574dd70ae..64ca061831 100644 --- a/plugins/love-resources/src/components/WorkbenchExtension.svelte +++ b/plugins/love-resources/src/components/WorkbenchExtension.svelte @@ -56,7 +56,7 @@ * When force is true, bypasses the audioUnlocked flag and checks the actual * AudioContext state — needed when Safari suspends audio after initial unlock. */ - async function ensureAudioUnlocked (force: boolean = false): Promise { + async function ensureAudioUnlocked(force: boolean = false): Promise { if (!force && audioUnlocked) return try { // Check actual AudioContext state when forcing recovery @@ -77,7 +77,7 @@ /** * Try to play an audio element with retry on user interaction. */ - function safePlay (element: HTMLAudioElement, trackSid: string): void { + function safePlay(element: HTMLAudioElement, trackSid: string): void { element.play().catch((err) => { console.warn('[WorkbenchExtension] Audio play() failed, will retry on interaction', { trackSid, @@ -100,7 +100,7 @@ /** * Get current audio context state for debugging Safari audio issues. */ - function getAudioContextState (): AudioContextState { + function getAudioContextState(): AudioContextState { try { // @ts-expect-error - accessing internal LiveKit audio context const audioCtx = lk.audioContext @@ -120,7 +120,7 @@ /** * Get current state of all audio elements for debugging. */ - function getAudioElementsState (): Array<{ + function getAudioElementsState(): Array<{ id: string paused: boolean muted: boolean @@ -147,7 +147,7 @@ * intercepting the audio element's output pipeline. * Returns true if the stream is producing non-silent audio. */ - function hasAudioOutput (element: HTMLAudioElement, trackSid: string): boolean { + function hasAudioOutput(element: HTMLAudioElement, trackSid: string): boolean { let entry = audioAnalysers.get(trackSid) if (entry == null) { try { @@ -175,7 +175,7 @@ return false } - function cleanupAnalyser (trackSid: string): void { + function cleanupAnalyser(trackSid: string): void { const entry = audioAnalysers.get(trackSid) if (entry != null) { try { @@ -189,7 +189,7 @@ /** * Collect full diagnostics for all remote audio tracks. */ - function collectAudioDiagnostics (): AudioTrackDiagnostics[] { + function collectAudioDiagnostics(): AudioTrackDiagnostics[] { const result: AudioTrackDiagnostics[] = [] for (const participant of lk.remoteParticipants.values()) { for (const publication of participant.trackPublications.values()) { @@ -223,7 +223,7 @@ /** * Retry playing all paused audio elements in the container. */ - function retryPausedAudioElements (): void { + function retryPausedAudioElements(): void { if (parentElement == null) return const audioElements = Array.from(parentElement.children) as HTMLAudioElement[] for (const el of audioElements) { @@ -238,7 +238,7 @@ } } - function attachAudioTrack ( + function attachAudioTrack( track: RemoteTrack, publication: RemoteTrackPublication, participant?: RemoteParticipant @@ -260,7 +260,7 @@ safePlay(element, publication.trackSid) } - function handleTrackSubscribed ( + function handleTrackSubscribed( track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant @@ -277,7 +277,7 @@ } } - function handleTrackUnsubscribed ( + function handleTrackUnsubscribed( track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant @@ -297,7 +297,7 @@ } } - function handleTrackMuted (publication: TrackPublication, participant: Participant): void { + function handleTrackMuted(publication: TrackPublication, participant: Participant): void { if (publication.track?.kind !== Track.Kind.Audio) return console.log('[WorkbenchExtension.handleTrackMuted]', { @@ -309,7 +309,7 @@ silentTrackCounts.delete(publication.trackSid) } - function handleTrackUnmuted (publication: TrackPublication, participant: Participant): void { + function handleTrackUnmuted(publication: TrackPublication, participant: Participant): void { if (publication.track?.kind !== Track.Kind.Audio) return console.log('[WorkbenchExtension.handleTrackUnmuted]', { @@ -365,7 +365,7 @@ * LiveKit signals playback got blocked by the browser (Safari autoplay policy, * suspended AudioContext). Canonical recovery point — force unlock and retry. */ - function handleAudioPlaybackStatusChanged (): void { + function handleAudioPlaybackStatusChanged(): void { const canPlayback = lk.canPlaybackAudio console.log( `[WorkbenchExtension] AudioPlaybackStatusChanged canPlayback=${canPlayback} ctx=${getAudioContextState().state}` @@ -382,7 +382,7 @@ * Safari-specific: detach and re-attach a single audio track * to force Safari to re-establish audio routing. */ - async function safariReattachTrack (publication: TrackPublication, participant: Participant): Promise { + async function safariReattachTrack(publication: TrackPublication, participant: Participant): Promise { await ensureAudioUnlocked(true) const track = publication.track @@ -412,7 +412,7 @@ * Re-attach all remote audio tracks. Called after LiveKit reconnect * to ensure audio elements reference the new MediaStreams. */ - async function reattachAllAudioTracks (): Promise { + async function reattachAllAudioTracks(): Promise { if (parentElement == null) return console.log('[WorkbenchExtension] Reattaching audio tracks after reconnect') @@ -473,7 +473,7 @@ const silentTrackCounts = new Map() const SILENT_THRESHOLD = 3 // Trigger recovery after 3 consecutive silent checks (~15s) - function startSafariAudioHealthCheck (): void { + function startSafariAudioHealthCheck(): void { if (!isSafariBrowser) return stopSafariAudioHealthCheck() @@ -593,7 +593,7 @@ }, AUDIO_CHECK_INTERVAL_MS) } - function stopSafariAudioHealthCheck (): void { + function stopSafariAudioHealthCheck(): void { if (safariAudioCheckInterval != null) { clearInterval(safariAudioCheckInterval) safariAudioCheckInterval = undefined @@ -603,7 +603,7 @@ /** * Attach existing audio tracks from already connected participants. */ - function attachExistingAudioTracks (): void { + function attachExistingAudioTracks(): void { let attachedCount = 0 for (const participant of lk.remoteParticipants.values()) { for (const publication of participant.trackPublications.values()) { diff --git a/plugins/love-resources/src/components/guest/GuestJoinPopup.svelte b/plugins/love-resources/src/components/guest/GuestJoinPopup.svelte index f9369913bb..5e86e5f9ce 100644 --- a/plugins/love-resources/src/components/guest/GuestJoinPopup.svelte +++ b/plugins/love-resources/src/components/guest/GuestJoinPopup.svelte @@ -57,7 +57,7 @@ let previewError: IntlString | null = null let previewStarting: boolean = false - async function startLocalPreview (): Promise { + async function startLocalPreview(): Promise { if (previewStarting || localStream != null) return previewStarting = true previewError = null @@ -82,7 +82,7 @@ } } - function stopLocalPreview (): void { + function stopLocalPreview(): void { if (localStream != null) { for (const t of localStream.getTracks()) { try { @@ -100,7 +100,7 @@ previewStarting = false } - function setStartWithVideo (value: boolean): void { + function setStartWithVideo(value: boolean): void { startWithVideo = value if (get(lkSessionConnected)) { void liveKitClient.setCameraEnabled(startWithVideo) @@ -111,7 +111,7 @@ } } - function setStartWithAudio (value: boolean): void { + function setStartWithAudio(value: boolean): void { startWithAudio = value if (get(lkSessionConnected)) { void liveKitClient.setMicrophoneEnabled(startWithAudio) @@ -119,7 +119,7 @@ } // Attach element for incoming tracks - function handleTrackSubscribed (track: RemoteTrack, publication: RemoteTrackPublication): void { + function handleTrackSubscribed(track: RemoteTrack, publication: RemoteTrackPublication): void { try { const el = track.attach() if (el == null) return @@ -134,7 +134,7 @@ } } - function handleTrackUnsubscribed (_track: RemoteTrack, publication: RemoteTrackPublication): void { + function handleTrackUnsubscribed(_track: RemoteTrack, publication: RemoteTrackPublication): void { try { const el = document.getElementById(publication.trackSid) if (el != null && el.parentElement === videoContainer) { @@ -145,7 +145,7 @@ } } - function attachExistingTracks (): void { + function attachExistingTracks(): void { try { // Attach already subscribed remote tracks for (const participant of lk.remoteParticipants.values()) { @@ -173,7 +173,7 @@ } } - async function join (firstName: string, lastName: string): Promise { + async function join(firstName: string, lastName: string): Promise { if (guestToken == null || meetingId == null) { error = 'Missing invite information' return @@ -256,7 +256,7 @@ } } - async function toggleMute (): Promise { + async function toggleMute(): Promise { try { await liveKitClient.setMicrophoneEnabled(!micEnabled) micEnabled = !micEnabled @@ -265,7 +265,7 @@ } } - async function toggleCam (): Promise { + async function toggleCam(): Promise { try { await liveKitClient.setCameraEnabled(!camEnabled) camEnabled = !camEnabled @@ -274,7 +274,7 @@ } } - async function leave (): Promise { + async function leave(): Promise { try { await liveKitClient.disconnect() } catch (err) { diff --git a/plugins/love-resources/src/components/guest/GuestMeetingApp.svelte b/plugins/love-resources/src/components/guest/GuestMeetingApp.svelte index a86a4b3584..6b80f055f0 100644 --- a/plugins/love-resources/src/components/guest/GuestMeetingApp.svelte +++ b/plugins/love-resources/src/components/guest/GuestMeetingApp.svelte @@ -83,13 +83,13 @@ let rows: number = 0 const guestRoomPlaceholder: any = undefined - function updateStyle (count: number, screenSharing: boolean): void { + function updateStyle(count: number, screenSharing: boolean): void { columns = screenSharing ? 1 : Math.min(Math.ceil(Math.sqrt(count)), 8) rows = Math.ceil(count / columns) gridStyle = `grid-template-columns: repeat(${columns}, 1fr); aspect-ratio: ${columns * 1280}/${rows * 720};` } - async function leaveGuest (): Promise { + async function leaveGuest(): Promise { try { await liveKitClient.disconnect() } catch (err: any) { @@ -98,7 +98,7 @@ } // Check if there are any non-guest participants in the room - function checkForNonGuestParticipants (): void { + function checkForNonGuestParticipants(): void { if (!lk || !$lkSessionConnected) return // Get all remote participants @@ -151,19 +151,19 @@ } } - function onParticipantConnected (_participant: RemoteParticipant): void { + function onParticipantConnected(_participant: RemoteParticipant): void { console.log('[GuestMeetingApp] Participant connected:', _participant.identity) // Recheck when someone joins checkForNonGuestParticipants() } - function onParticipantDisconnected (_participant: RemoteParticipant): void { + function onParticipantDisconnected(_participant: RemoteParticipant): void { console.log('[GuestMeetingApp] Participant disconnected:', _participant.identity) // Recheck when someone leaves checkForNonGuestParticipants() } - function startGuestOnlyCheck (): void { + function startGuestOnlyCheck(): void { if (guestOnlyCheckInterval !== undefined) return console.log('[GuestMeetingApp] Starting guest-only check') @@ -176,7 +176,7 @@ }, GUEST_ONLY_CHECK_INTERVAL_MS) } - function stopGuestOnlyCheck (): void { + function stopGuestOnlyCheck(): void { console.log('[GuestMeetingApp] Stopping guest-only check') if (guestOnlyCheckInterval !== undefined) { clearInterval(guestOnlyCheckInterval) @@ -188,7 +188,7 @@ } } - function handleLocation (loc: Location): void { + function handleLocation(loc: Location): void { if (loc.path[0] !== 'meetings') { return } @@ -205,7 +205,7 @@ } } - async function fetchGuestInfo (): Promise { + async function fetchGuestInfo(): Promise { if (guestToken == null) return lastFetchedToken = guestToken @@ -312,7 +312,7 @@ } }) - function goHome (): void { + function goHome(): void { // Navigate to root (workbench) - adjust if you prefer a different location navigate({ path: [] }) } @@ -321,7 +321,7 @@ const handleFullScreen = () => ($isFullScreen = document.fullscreenElement != null) - function checkFullscreen (): void { + function checkFullscreen(): void { const needFullScreen = $isFullScreen if (document.fullscreenElement && !needFullScreen) { document @@ -346,7 +346,7 @@ } } - function onFullScreen (): void { + function onFullScreen(): void { const needFullScreen = !$isFullScreen if (!document.fullscreenElement && needFullScreen && roomEl != null) { roomEl diff --git a/plugins/love-resources/src/components/guest/GuestParticipantView.svelte b/plugins/love-resources/src/components/guest/GuestParticipantView.svelte index 4f64c5ddcc..1a53504b7a 100644 --- a/plugins/love-resources/src/components/guest/GuestParticipantView.svelte +++ b/plugins/love-resources/src/components/guest/GuestParticipantView.svelte @@ -58,7 +58,7 @@ let reactions: Array<{ id: string, emoji: string, width: number, height: number }> = [] // Attach a track's element to the DOM - function attachTrack (track: Track): void { + function attachTrack(track: Track): void { if (parent == null) return detachCurrentTrack() @@ -72,7 +72,7 @@ videoMuted = false } - function detachCurrentTrack (): void { + function detachCurrentTrack(): void { if (videoTrackElement !== undefined) { try { videoTrack?.detach(videoTrackElement) @@ -89,7 +89,7 @@ } } - function setTrackMuted (value: boolean): void { + function setTrackMuted(value: boolean): void { if (videoTrackElement !== undefined) { if (value) { videoTrackElement.classList.add('hidden') @@ -100,11 +100,11 @@ videoMuted = value } - function speachHandler (speaking: boolean): void { + function speachHandler(speaking: boolean): void { isSpeaking = speaking } - function muteHandler (publication: TrackPublication): void { + function muteHandler(publication: TrackPublication): void { if (publication.kind === Track.Kind.Audio) { microphoneMuted = publication.isMuted } else if (publication.kind === Track.Kind.Video && publication.source !== Track.Source.ScreenShare) { @@ -112,11 +112,11 @@ } } - function onConnectionQualityChanged (quality: ConnectionQuality): void { + function onConnectionQualityChanged(quality: ConnectionQuality): void { isBadConnection = quality === ConnectionQuality.Lost || quality === ConnectionQuality.Poor } - function onLocalTrackPublished (publication: LocalTrackPublication): void { + function onLocalTrackPublished(publication: LocalTrackPublication): void { if (publication.track === undefined) return if (publication.kind === Track.Kind.Audio) { microphoneMuted = publication.isMuted @@ -127,13 +127,13 @@ } } - function onLocalTrackUnpublished (publication: LocalTrackPublication): void { + function onLocalTrackUnpublished(publication: LocalTrackPublication): void { if (videoTrack === publication.track) { detachCurrentTrack() } } - function onTrackSubscribed (track: RemoteTrack, publication: RemoteTrackPublication): void { + function onTrackSubscribed(track: RemoteTrack, publication: RemoteTrackPublication): void { if (track.kind === Track.Kind.Audio) { microphoneMuted = track.isMuted } else if (track.kind === Track.Kind.Video && publication.source !== Track.Source.ScreenShare) { @@ -143,13 +143,13 @@ } } - function onTrackUnsubscribed (track: RemoteTrack): void { + function onTrackUnsubscribed(track: RemoteTrack): void { if (videoTrack === track) { detachCurrentTrack() } } - function onChatMessage (message: ChatMessage, p?: RemoteParticipant | LocalParticipant | undefined): void { + function onChatMessage(message: ChatMessage, p?: RemoteParticipant | LocalParticipant | undefined): void { // Only display reaction if it belongs to this participant if (activeParticipant !== p) return if (parent == null) return @@ -164,7 +164,7 @@ ] } - function detachParticipant (): void { + function detachParticipant(): void { if (activeParticipant === undefined) return activeParticipant.off(ParticipantEvent.TrackMuted, muteHandler) activeParticipant.off(ParticipantEvent.TrackUnmuted, muteHandler) @@ -182,7 +182,7 @@ detachCurrentTrack() } - function setParticipant (p: Participant | undefined): void { + function setParticipant(p: Participant | undefined): void { if (parent == null) return if (activeParticipant === p) return diff --git a/plugins/love-resources/src/components/guest/GuestParticipantsListView.svelte b/plugins/love-resources/src/components/guest/GuestParticipantsListView.svelte index a387a6437d..f8d19ab314 100644 --- a/plugins/love-resources/src/components/guest/GuestParticipantsListView.svelte +++ b/plugins/love-resources/src/components/guest/GuestParticipantsListView.svelte @@ -38,7 +38,7 @@ let participants: ParticipantData[] = [] // Attach or update a participant entry (using LiveKit identity as key). - function attachParticipant (participant: Participant): void { + function attachParticipant(participant: Participant): void { if (participant == null) return if (participant.identity == null || participant.identity === '') return @@ -59,7 +59,7 @@ participants = participants } - function handleParticipantDisconnected (participant: RemoteParticipant): void { + function handleParticipantDisconnected(participant: RemoteParticipant): void { const index = participants.findIndex((p) => p._id === participant.identity) if (index !== -1) { participants.splice(index, 1) @@ -96,7 +96,7 @@ // Return active participants to render. For guests we hide agent participants // unless there's an explicit reason to show them (guests don't have DB-based info). - function getActiveParticipants (items: ParticipantData[]): ParticipantData[] { + function getActiveParticipants(items: ParticipantData[]): ParticipantData[] { const result = items.filter((p) => !p.isAgent) dispatch('participantsCount', result.length) return result diff --git a/plugins/love-resources/src/components/meeting/ControlBar.svelte b/plugins/love-resources/src/components/meeting/ControlBar.svelte index a1fe3b7382..2e6b369252 100644 --- a/plugins/love-resources/src/components/meeting/ControlBar.svelte +++ b/plugins/love-resources/src/components/meeting/ControlBar.svelte @@ -46,7 +46,7 @@ // If user is in a meeting, they can leave unless it's their office or reception $: allowLeave = $myInfo !== undefined && $myInfo.room !== ($myOffice?._id ?? love.ids.Reception) - function maximize (): void { + function maximize(): void { showPopup(RoomModal, { room }, 'full-centered') } diff --git a/plugins/love-resources/src/components/meeting/ControlBarContainer.svelte b/plugins/love-resources/src/components/meeting/ControlBarContainer.svelte index 2fb9db5f2a..12840450e3 100644 --- a/plugins/love-resources/src/components/meeting/ControlBarContainer.svelte +++ b/plugins/love-resources/src/components/meeting/ControlBarContainer.svelte @@ -25,7 +25,7 @@ const HORIZONTAL_PADDING = 60 const SCALE_CHANGE_THRESHOLD = 0.001 - function measureWidths (): { barWidth: number, rowWidth: number } { + function measureWidths(): { barWidth: number, rowWidth: number } { if (barContainer === undefined || rowContainer === undefined) { return { barWidth: 0, rowWidth: 0 } } @@ -37,7 +37,7 @@ return { barWidth, rowWidth } } - function updateScale (): void { + function updateScale(): void { const { barWidth: containerWidth, rowWidth } = measureWidths() if (containerWidth === 0 || rowWidth === 0) { diff --git a/plugins/love-resources/src/components/meeting/ControlExt.svelte b/plugins/love-resources/src/components/meeting/ControlExt.svelte index c94e4eb04c..c1ee188ad0 100644 --- a/plugins/love-resources/src/components/meeting/ControlExt.svelte +++ b/plugins/love-resources/src/components/meeting/ControlExt.svelte @@ -40,7 +40,7 @@ meeting: MeetingMinutes } - function getActiveMeetings (rooms: Room[], infos: ParticipantInfo[], meetings: MeetingMinutes[]): ActiveRoom[] { + function getActiveMeetings(rooms: Room[], infos: ParticipantInfo[], meetings: MeetingMinutes[]): ActiveRoom[] { const roomMap = toIdMap(rooms) const map: IdMap = new Map() for (const info of infos) { @@ -80,7 +80,7 @@ $: activeMeetings = getActiveMeetings($rooms, $infos, $meetings) - function openRoom (room: ActiveRoom): (e: MouseEvent) => void { + function openRoom(room: ActiveRoom): (e: MouseEvent) => void { return (e: MouseEvent) => { closeTooltip() showPopup(RoomPopup, { room, meeting: room.meeting }, eventToHTMLElement(e)) @@ -93,7 +93,7 @@ $: receptionParticipants = $infos.filter((p) => p.room === love.ids.Reception) - function checkActiveMeeting ( + function checkActiveMeeting( loc: Location, meetingSessionConnected: boolean, room: Ref | undefined, @@ -164,13 +164,13 @@ closeWidget(love.ids.MeetingWidget) }) - function participantClickHandler (e: MouseEvent, participant: ParticipantInfo): void { + function participantClickHandler(e: MouseEvent, participant: ParticipantInfo): void { if ($myInfo !== undefined) { showPopup(PersonActionPopup, { room: reception, person: participant.person }, eventToHTMLElement(e)) } } - function getParticipantClickHandler (participant: ParticipantInfo): (e: MouseEvent) => void { + function getParticipantClickHandler(participant: ParticipantInfo): (e: MouseEvent) => void { return (e: MouseEvent) => { participantClickHandler(e, participant) } diff --git a/plugins/love-resources/src/components/meeting/LastParticipantNotification.svelte b/plugins/love-resources/src/components/meeting/LastParticipantNotification.svelte index 43cb89e92c..91d10352dc 100644 --- a/plugins/love-resources/src/components/meeting/LastParticipantNotification.svelte +++ b/plugins/love-resources/src/components/meeting/LastParticipantNotification.svelte @@ -20,11 +20,11 @@ export let onRemove: () => void export let notification: Notification - function stayInMeeting (): void { + function stayInMeeting(): void { onRemove() } - async function leave (): Promise { + async function leave(): Promise { // Use dynamic import to avoid circular dependency const { leaveMeeting } = await import('../../meetings') await leaveMeeting() diff --git a/plugins/love-resources/src/components/meeting/MeetingHeader.svelte b/plugins/love-resources/src/components/meeting/MeetingHeader.svelte index 9c25cbd075..8fdfc83151 100644 --- a/plugins/love-resources/src/components/meeting/MeetingHeader.svelte +++ b/plugins/love-resources/src/components/meeting/MeetingHeader.svelte @@ -20,7 +20,7 @@ currentMeetingMinutes = res }) - function formatElapsedTime (elapsed: number): string { + function formatElapsedTime(elapsed: number): string { const seconds = Math.floor(elapsed / 1000) const minutes = Math.floor(seconds / 60) const hours = Math.floor(minutes / 60) diff --git a/plugins/love-resources/src/components/meeting/MicSettingPopup.svelte b/plugins/love-resources/src/components/meeting/MicSettingPopup.svelte index 8c3745f906..8d6bdcda09 100644 --- a/plugins/love-resources/src/components/meeting/MicSettingPopup.svelte +++ b/plugins/love-resources/src/components/meeting/MicSettingPopup.svelte @@ -10,7 +10,7 @@ const client = getClient() - function isNoiseCancellationSupported (): boolean { + function isNoiseCancellationSupported(): boolean { try { const c = navigator.mediaDevices?.getSupportedConstraints?.() ?? {} return c.echoCancellation === true || c.noiseSuppression === true @@ -19,7 +19,7 @@ } } - async function saveNoiseCancellationPreference ( + async function saveNoiseCancellationPreference( myPreferences: DevicesPreference | undefined, value: boolean ): Promise { @@ -38,7 +38,7 @@ await liveKitClient.applyNoiseCancellation(value) } - async function saveSpeakingWhileMutedPreference ( + async function saveSpeakingWhileMutedPreference( myPreferences: DevicesPreference | undefined, value: boolean ): Promise { diff --git a/plugins/love-resources/src/components/meeting/ParticipantView.svelte b/plugins/love-resources/src/components/meeting/ParticipantView.svelte index c8864ff7ac..48793a51fb 100644 --- a/plugins/love-resources/src/components/meeting/ParticipantView.svelte +++ b/plugins/love-resources/src/components/meeting/ParticipantView.svelte @@ -57,7 +57,7 @@ $: user = $personByRefStore?.get(_id as Ref) $: userName = (user !== undefined ? user.name : activeParticipant?.name) ?? '' - function attachTrack (track: Track): void { + function attachTrack(track: Track): void { if (parent == null) return detachCurrentTrack() @@ -71,14 +71,14 @@ videoMuted = !enabled } - function detachCurrentTrack (): void { + function detachCurrentTrack(): void { if (videoTrackElement !== undefined) { videoTrack?.detach(videoTrackElement) videoTrackElement.remove() } } - function setTrackMuted (value: boolean): void { + function setTrackMuted(value: boolean): void { if (videoTrackElement !== undefined) { if (value) { videoTrackElement.classList.add('hidden') @@ -89,11 +89,11 @@ videoMuted = value } - function speachHandler (speaking: boolean): void { + function speachHandler(speaking: boolean): void { isSpeaking = speaking } - function muteHandler (publication: TrackPublication): void { + function muteHandler(publication: TrackPublication): void { if (publication.kind === Track.Kind.Audio) { microphoneMuted = publication.isMuted } else if (publication.kind === Track.Kind.Video && publication.source !== Track.Source.ScreenShare) { @@ -101,11 +101,11 @@ } } - function onConnectionQualityChanged (quality: ConnectionQuality): void { + function onConnectionQualityChanged(quality: ConnectionQuality): void { isBadConnection = quality === ConnectionQuality.Lost || quality === ConnectionQuality.Poor } - function onLocalTrackPublished (publication: LocalTrackPublication): void { + function onLocalTrackPublished(publication: LocalTrackPublication): void { if (publication.track === undefined) return if (publication.kind === Track.Kind.Audio) { microphoneMuted = publication.isMuted @@ -114,13 +114,13 @@ } } - function onLocalTrackUnpublished (publication: LocalTrackPublication): void { + function onLocalTrackUnpublished(publication: LocalTrackPublication): void { if (videoTrack === publication.track) { detachCurrentTrack() } } - function onTrackSubscribed (track: RemoteTrack, publication: RemoteTrackPublication): void { + function onTrackSubscribed(track: RemoteTrack, publication: RemoteTrackPublication): void { if (track.kind === Track.Kind.Audio) { microphoneMuted = track.isMuted } else if (track.kind === Track.Kind.Video && track.source !== Track.Source.ScreenShare) { @@ -128,13 +128,13 @@ } } - function onTrackUnsubscribed (track: RemoteTrack, publication: RemoteTrackPublication): void { + function onTrackUnsubscribed(track: RemoteTrack, publication: RemoteTrackPublication): void { if (videoTrack === track) { detachCurrentTrack() } } - function detachParticipant (): void { + function detachParticipant(): void { if (activeParticipant === undefined) return activeParticipant.off(ParticipantEvent.TrackMuted, muteHandler) activeParticipant.off(ParticipantEvent.TrackUnmuted, muteHandler) @@ -149,7 +149,7 @@ activeParticipant = undefined } - function onChatMessage (message: ChatMessage, participant?: RemoteParticipant | LocalParticipant | undefined): void { + function onChatMessage(message: ChatMessage, participant?: RemoteParticipant | LocalParticipant | undefined): void { if (activeParticipant !== participant) return reactions = [ ...reactions, @@ -164,7 +164,7 @@ let reactions: Array<{ id: string, emoji: string, height: number, width: number }> = [] - function setParticipant (p: Participant | undefined): void { + function setParticipant(p: Participant | undefined): void { if (parent == null) return if (activeParticipant === p) return diff --git a/plugins/love-resources/src/components/meeting/ParticipantsListView.svelte b/plugins/love-resources/src/components/meeting/ParticipantsListView.svelte index 5b45b8cc51..2b8793335c 100644 --- a/plugins/love-resources/src/components/meeting/ParticipantsListView.svelte +++ b/plugins/love-resources/src/components/meeting/ParticipantsListView.svelte @@ -55,7 +55,7 @@ let lkitParticipants = new Map, ParticipantData>() // Attach or update a participant entry (using LiveKit identity as key). - function attachParticipant (participant: Participant): void { + function attachParticipant(participant: Participant): void { // Add new participant const value: ParticipantData = { _id: participant.identity, @@ -66,12 +66,12 @@ lkitParticipants = lkitParticipants } - function handleParticipantDisconnected (participant: RemoteParticipant): void { + function handleParticipantDisconnected(participant: RemoteParticipant): void { lkitParticipants.delete(participant.identity as Ref) lkitParticipants = lkitParticipants } - function updateParticipants ( + function updateParticipants( data: ParticipantInfo[], currentMeeting: MeetingMinutes | undefined, room: Ref, diff --git a/plugins/love-resources/src/components/meeting/ScreenSharingView.svelte b/plugins/love-resources/src/components/meeting/ScreenSharingView.svelte index ef1ad316f3..e7aee73179 100644 --- a/plugins/love-resources/src/components/meeting/ScreenSharingView.svelte +++ b/plugins/love-resources/src/components/meeting/ScreenSharingView.svelte @@ -35,7 +35,7 @@ let showControls = false let hideTimeout: ReturnType | undefined - function showControlsWithTimeout (): void { + function showControlsWithTimeout(): void { showControls = true clearTimeout(hideTimeout) hideTimeout = setTimeout(() => { @@ -43,39 +43,39 @@ }, 2000) } - function handleMouseEnter (): void { + function handleMouseEnter(): void { showControlsWithTimeout() } - function handleMouseLeave (): void { + function handleMouseLeave(): void { showControls = false clearTimeout(hideTimeout) } - function zoomIn (): void { + function zoomIn(): void { scale = Math.min(MAX_SCALE, scale + SCALE_STEP) clampPan() } - function zoomOut (): void { + function zoomOut(): void { scale = Math.max(MIN_SCALE, scale - SCALE_STEP) clampPan() } - function clampPan (): void { + function clampPan(): void { if (scale <= 1) { panX = 0 panY = 0 } } - function resetZoom (): void { + function resetZoom(): void { scale = 1 panX = 0 panY = 0 } - function handleMouseDown (e: MouseEvent): void { + function handleMouseDown(e: MouseEvent): void { if (scale > 1) { isDragging = true startX = e.clientX - panX @@ -83,7 +83,7 @@ } } - function handleMouseMove (e: MouseEvent): void { + function handleMouseMove(e: MouseEvent): void { if (isDragging && scale > 1) { panX = e.clientX - startX panY = e.clientY - startY @@ -92,12 +92,12 @@ showControlsWithTimeout() } - function handleMouseUp (): void { + function handleMouseUp(): void { isDragging = false clampPan() } - function handleWheel (e: WheelEvent): void { + function handleWheel(e: WheelEvent): void { e.preventDefault() const rect = container.getBoundingClientRect() const mouseX = e.clientX - rect.left - rect.width / 2 @@ -113,7 +113,7 @@ } } - function trySetActiveTrack (track: Track | undefined): boolean { + function trySetActiveTrack(track: Track | undefined): boolean { if (track === undefined) return false if (track.kind !== Track.Kind.Video || track.source !== Track.Source.ScreenShare) return false hasActiveTrack = true @@ -122,14 +122,14 @@ return true } - function clearActiveTrack (track: Track | undefined): void { + function clearActiveTrack(track: Track | undefined): void { if (track !== activeTrack) return hasActiveTrack = false activeTrack?.detach() activeTrack = null } - function onTrackSubscribed ( + function onTrackSubscribed( track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant @@ -137,7 +137,7 @@ trySetActiveTrack(track) } - function onTrackUnsubscribed ( + function onTrackUnsubscribed( track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant @@ -145,11 +145,11 @@ clearActiveTrack(track) } - function onLocalTrackPublished (publication: LocalTrackPublication, participant: LocalParticipant): void { + function onLocalTrackPublished(publication: LocalTrackPublication, participant: LocalParticipant): void { trySetActiveTrack(publication.track) } - function onLocalTrackUnpublished (publication: LocalTrackPublication, participant: LocalParticipant): void { + function onLocalTrackUnpublished(publication: LocalTrackPublication, participant: LocalParticipant): void { clearActiveTrack(publication.track) } diff --git a/plugins/love-resources/src/components/meeting/controls/CameraButton.svelte b/plugins/love-resources/src/components/meeting/controls/CameraButton.svelte index 80f5764c76..decb3c8848 100644 --- a/plugins/love-resources/src/components/meeting/controls/CameraButton.svelte +++ b/plugins/love-resources/src/components/meeting/controls/CameraButton.svelte @@ -18,7 +18,7 @@ ? getClient().getModel().findAllSync(view.class.Action, { _id: love.action.ToggleVideo })?.[0]?.keyBinding : [] - function camSettings (e: MouseEvent): void { + function camSettings(e: MouseEvent): void { showPopup(CamSettingPopup, {}, eventToHTMLElement(e)) } diff --git a/plugins/love-resources/src/components/meeting/controls/LeaveRoomButton.svelte b/plugins/love-resources/src/components/meeting/controls/LeaveRoomButton.svelte index 5822f4a4ac..5a2c78cce2 100644 --- a/plugins/love-resources/src/components/meeting/controls/LeaveRoomButton.svelte +++ b/plugins/love-resources/src/components/meeting/controls/LeaveRoomButton.svelte @@ -15,7 +15,7 @@ // Check if this is my office using myOffice store (works even when not in a meeting) $: isMyOffice = isOffice(room) && room._id === $myOffice?._id - async function leave (): Promise { + async function leave(): Promise { await leaveMeeting() dispatch('leave') } diff --git a/plugins/love-resources/src/components/meeting/controls/MeetingOptionsButton.svelte b/plugins/love-resources/src/components/meeting/controls/MeetingOptionsButton.svelte index fe185fd2d2..32866a46ae 100644 --- a/plugins/love-resources/src/components/meeting/controls/MeetingOptionsButton.svelte +++ b/plugins/love-resources/src/components/meeting/controls/MeetingOptionsButton.svelte @@ -27,14 +27,14 @@ icon: action.icon })) - async function handleMenuOption (e: CustomEvent): Promise { + async function handleMenuOption(e: CustomEvent): Promise { const action = actions.find((action) => action._id === e.detail) if (action !== undefined) { await handleAction(action) } } - async function handleAction (action: Action): Promise { + async function handleAction(action: Action): Promise { const fn = await getResource(action.action) await fn(room) } diff --git a/plugins/love-resources/src/components/meeting/controls/MicrophoneButton.svelte b/plugins/love-resources/src/components/meeting/controls/MicrophoneButton.svelte index 2b2eab099d..6b1ac583b5 100644 --- a/plugins/love-resources/src/components/meeting/controls/MicrophoneButton.svelte +++ b/plugins/love-resources/src/components/meeting/controls/MicrophoneButton.svelte @@ -15,7 +15,7 @@ ? getClient().getModel().findAllSync(view.class.Action, { _id: love.action.ToggleMic })?.[0]?.keyBinding : ['Alt+D'] - function micSettings (e: MouseEvent): void { + function micSettings(e: MouseEvent): void { showPopup(MicSettingPopup, {}, eventToHTMLElement(e)) } diff --git a/plugins/love-resources/src/components/meeting/controls/RoomAccessButton.svelte b/plugins/love-resources/src/components/meeting/controls/RoomAccessButton.svelte index 23720213ed..48221fa175 100644 --- a/plugins/love-resources/src/components/meeting/controls/RoomAccessButton.svelte +++ b/plugins/love-resources/src/components/meeting/controls/RoomAccessButton.svelte @@ -11,7 +11,7 @@ const me = getCurrentEmployee() - function setAccess (e: MouseEvent): void { + function setAccess(e: MouseEvent): void { if (isOffice(room) && room.person !== me) return showPopup(RoomAccessPopup, { room }, eventToHTMLElement(e)) } diff --git a/plugins/love-resources/src/components/meeting/controls/SendReactionButton.svelte b/plugins/love-resources/src/components/meeting/controls/SendReactionButton.svelte index c76e7a5f55..ea63521b7a 100644 --- a/plugins/love-resources/src/components/meeting/controls/SendReactionButton.svelte +++ b/plugins/love-resources/src/components/meeting/controls/SendReactionButton.svelte @@ -5,7 +5,7 @@ export let size: 'large' | 'medium' | 'small' | 'extra-small' | 'min' = 'large' - function addReaction (event: MouseEvent): void { + function addReaction(event: MouseEvent): void { showPopup( emojiPlugin.component.EmojiPopup, {}, diff --git a/plugins/love-resources/src/components/meeting/controls/ShareScreenButton.svelte b/plugins/love-resources/src/components/meeting/controls/ShareScreenButton.svelte index e53db1d9cb..fb92047371 100644 --- a/plugins/love-resources/src/components/meeting/controls/ShareScreenButton.svelte +++ b/plugins/love-resources/src/components/meeting/controls/ShareScreenButton.svelte @@ -10,14 +10,14 @@ const dispatch = createEventDispatcher() - async function changeShare (): Promise { + async function changeShare(): Promise { const newValue = $screenSharingState !== ScreenSharingState.Local const audio = newValue && $isShareWithSound await liveKitClient.setScreenShareEnabled(newValue, audio) dispatch('changeShare') } - function shareSettings (e: MouseEvent): void { + function shareSettings(e: MouseEvent): void { showPopup(ShareSettingPopup, {}, eventToHTMLElement(e)) } diff --git a/plugins/love-resources/src/components/meeting/invites/IncomingInvitePopup.svelte b/plugins/love-resources/src/components/meeting/invites/IncomingInvitePopup.svelte index dbee3b8e5d..94b2b35047 100644 --- a/plugins/love-resources/src/components/meeting/invites/IncomingInvitePopup.svelte +++ b/plugins/love-resources/src/components/meeting/invites/IncomingInvitePopup.svelte @@ -54,12 +54,12 @@ clearInterval(interval) }) - async function handleJoin (): Promise { + async function handleJoin(): Promise { await responseToInviteRequest(invite, true) dispatch('close') } - async function handleReject (): Promise { + async function handleReject(): Promise { await responseToInviteRequest(invite, false) dispatch('close') } diff --git a/plugins/love-resources/src/components/meeting/invites/InviteEmployeeButton.svelte b/plugins/love-resources/src/components/meeting/invites/InviteEmployeeButton.svelte index e4ebf90ef3..ef2c32adf5 100644 --- a/plugins/love-resources/src/components/meeting/invites/InviteEmployeeButton.svelte +++ b/plugins/love-resources/src/components/meeting/invites/InviteEmployeeButton.svelte @@ -31,7 +31,7 @@ const dispatch = createEventDispatcher() - async function invite (): Promise { + async function invite(): Promise { if (employee !== undefined) { sendInvites([employee._id]) } else { @@ -39,7 +39,7 @@ } } - function openSelectUsersPopup (): void { + function openSelectUsersPopup(): void { const skipAccounts = $infos.filter((p) => p.meeting === $currentMeetingMinutes?._id).map((p) => p.person) showPopup( SelectUsersPopup, diff --git a/plugins/love-resources/src/components/meeting/invites/InvitesExt.svelte b/plugins/love-resources/src/components/meeting/invites/InvitesExt.svelte index 21eb8f2148..8698262458 100644 --- a/plugins/love-resources/src/components/meeting/invites/InvitesExt.svelte +++ b/plugins/love-resources/src/components/meeting/invites/InvitesExt.svelte @@ -47,7 +47,7 @@ } ) - function openOutgoingInvites (e: MouseEvent, invite: UserMeetingInvite, person: Person): void { + function openOutgoingInvites(e: MouseEvent, invite: UserMeetingInvite, person: Person): void { closePopup(invitesCategory) showPopup( OutgoingInvitePopup, @@ -65,7 +65,7 @@ ) } - function openIncomingInvites (e: MouseEvent, invite: UserMeetingInvite, person: Person): void { + function openIncomingInvites(e: MouseEvent, invite: UserMeetingInvite, person: Person): void { closePopup(invitesCategory) showPopup( IncomingInvitePopup, diff --git a/plugins/love-resources/src/components/meeting/invites/OutgoingInvitePopup.svelte b/plugins/love-resources/src/components/meeting/invites/OutgoingInvitePopup.svelte index 4bc68d617b..9ea40d4145 100644 --- a/plugins/love-resources/src/components/meeting/invites/OutgoingInvitePopup.svelte +++ b/plugins/love-resources/src/components/meeting/invites/OutgoingInvitePopup.svelte @@ -43,7 +43,7 @@ clearInterval(countdownInterval) }) - async function handleCancel (): Promise { + async function handleCancel(): Promise { await cancelInvites(undefined, [invite]) dispatch('close') } diff --git a/plugins/love-resources/src/components/meeting/widget/ChatTab.svelte b/plugins/love-resources/src/components/meeting/widget/ChatTab.svelte index 1ce29275b5..afea6c1b2e 100644 --- a/plugins/love-resources/src/components/meeting/widget/ChatTab.svelte +++ b/plugins/love-resources/src/components/meeting/widget/ChatTab.svelte @@ -23,11 +23,11 @@ export let height: string export let width: string - function replyToThread (message: ActivityMessage): void { + function replyToThread(message: ActivityMessage): void { updateTabData(love.ids.MeetingWidget, 'chat', { thread: message._id }) } - function closeThread (): void { + function closeThread(): void { updateTabData(love.ids.MeetingWidget, 'chat', { thread: undefined }) } diff --git a/plugins/love-resources/src/components/meeting/widget/MeetingWidget.svelte b/plugins/love-resources/src/components/meeting/widget/MeetingWidget.svelte index 8669e6e7e7..9ffc722712 100644 --- a/plugins/love-resources/src/components/meeting/widget/MeetingWidget.svelte +++ b/plugins/love-resources/src/components/meeting/widget/MeetingWidget.svelte @@ -53,7 +53,7 @@ closeWidget(love.ids.MeetingWidget) } - function handleClose (): void { + function handleClose(): void { minimizeSidebar() } diff --git a/plugins/love-resources/src/components/meeting/widget/MeetingWidgetHeader.svelte b/plugins/love-resources/src/components/meeting/widget/MeetingWidgetHeader.svelte index b30437654d..d9ecf0164b 100644 --- a/plugins/love-resources/src/components/meeting/widget/MeetingWidgetHeader.svelte +++ b/plugins/love-resources/src/components/meeting/widget/MeetingWidgetHeader.svelte @@ -45,7 +45,7 @@ } ] - function maximize (): void { + function maximize(): void { popup = showPopup(RoomModal, { room }, 'full-centered', undefined) } diff --git a/plugins/love-resources/src/components/meeting/widget/WidgetSwitcher.svelte b/plugins/love-resources/src/components/meeting/widget/WidgetSwitcher.svelte index 2c6a768411..c9a090affa 100644 --- a/plugins/love-resources/src/components/meeting/widget/WidgetSwitcher.svelte +++ b/plugins/love-resources/src/components/meeting/widget/WidgetSwitcher.svelte @@ -41,8 +41,8 @@ : $lkSessionConnected && !allowCam && isMicEnabled ? love.icon.Mic : !allowCam || (!isCamEnabled && isMicEnabled) - ? love.icon.Mic - : icon} + ? love.icon.Mic + : icon} {selected} {size} kind={$screenSharingState === ScreenSharingState.Local diff --git a/plugins/love-resources/src/types.ts b/plugins/love-resources/src/types.ts index 52fad6bc8d..95c04c633d 100644 --- a/plugins/love-resources/src/types.ts +++ b/plugins/love-resources/src/types.ts @@ -43,9 +43,7 @@ export const shadowError: RGBAColor = { r: 249, g: 110, b: 80, a: 1 } export const loveSeparators: DefSeparators = [{ minSize: 17.5, size: 25, maxSize: 30, float: 'navigator' }, null] -export const languagesDisplayData: { - [key in RoomLanguage]: { emoji: string, label: string } -} = { +export const languagesDisplayData: Record = { bg: { emoji: '🇧🇬', label: 'Български' }, ca: { emoji: '🇨🇦', label: 'Català' }, zh: { emoji: '🇨🇳', label: '简体中文' }, diff --git a/plugins/love/.eslintrc.js b/plugins/love/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/love/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/love/eslint.config.mjs b/plugins/love/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/love/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/love/package.json b/plugins/love/package.json index 93348ccb37..c08799c3eb 100644 --- a/plugins/love/package.json +++ b/plugins/love/package.json @@ -23,19 +23,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "prettier-plugin-svelte": "^3.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/love/src/utils.ts b/plugins/love/src/utils.ts index 3299f7bb92..bb9b05ab3b 100644 --- a/plugins/love/src/utils.ts +++ b/plugins/love/src/utils.ts @@ -203,9 +203,9 @@ export function getFreePosition ( width: number, height: number ): { - x: number - y: number - } { + x: number + y: number +} { const map: boolean[][] = getFreeSpace(rooms) for (let y = 0; y <= map.length; y++) { diff --git a/plugins/mail-assets/.eslintrc.js b/plugins/mail-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/mail-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/mail-assets/eslint.config.mjs b/plugins/mail-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/mail-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/mail-assets/package.json b/plugins/mail-assets/package.json index 5bde46d71d..4d62e0340b 100644 --- a/plugins/mail-assets/package.json +++ b/plugins/mail-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/mail-assets/src/lang.ts b/plugins/mail-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/mail-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/mail/.eslintrc.js b/plugins/mail/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/mail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/mail/eslint.config.mjs b/plugins/mail/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/mail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/mail/package.json b/plugins/mail/package.json index 92722e58fe..17562cedf9 100644 --- a/plugins/mail/package.json +++ b/plugins/mail/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/media-assets/.eslintrc.js b/plugins/media-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/media-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/media-assets/eslint.config.mjs b/plugins/media-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/media-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/media-assets/package.json b/plugins/media-assets/package.json index f8bf8ed17b..66ce2b9396 100644 --- a/plugins/media-assets/package.json +++ b/plugins/media-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/media-assets/src/lang.ts b/plugins/media-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/media-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/media-resources/.eslintrc.js b/plugins/media-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/media-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/media-resources/eslint.config.mjs b/plugins/media-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/media-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/media-resources/package.json b/plugins/media-resources/package.json index 1ffc8e2704..0fb3cfe122 100644 --- a/plugins/media-resources/package.json +++ b/plugins/media-resources/package.json @@ -17,28 +17,27 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "typescript": "^5.9.3", "@types/events": "^3.0.3", - "typed-emitter": "^2.1.0" + "typed-emitter": "^2.1.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/media-resources/src/components/MediaPopup.svelte b/plugins/media-resources/src/components/MediaPopup.svelte index e0f5de63ed..e4b3ce6ab0 100644 --- a/plugins/media-resources/src/components/MediaPopup.svelte +++ b/plugins/media-resources/src/components/MediaPopup.svelte @@ -27,7 +27,7 @@ let camOpened = false let spkOpened = false - function handleMicExpanded (ev: CustomEvent): void { + function handleMicExpanded(ev: CustomEvent): void { micOpened = ev.detail if (micOpened) { camOpened = false @@ -35,7 +35,7 @@ } } - function handleCamExpanded (ev: CustomEvent): void { + function handleCamExpanded(ev: CustomEvent): void { camOpened = ev.detail if (camOpened) { micOpened = false @@ -43,7 +43,7 @@ } } - function handleSpkExpanded (ev: CustomEvent): void { + function handleSpkExpanded(ev: CustomEvent): void { spkOpened = ev.detail if (spkOpened) { micOpened = false diff --git a/plugins/media-resources/src/components/MediaPopupCamPreview.svelte b/plugins/media-resources/src/components/MediaPopupCamPreview.svelte index f98eacb1eb..d1b1269520 100644 --- a/plugins/media-resources/src/components/MediaPopupCamPreview.svelte +++ b/plugins/media-resources/src/components/MediaPopupCamPreview.svelte @@ -22,7 +22,7 @@ let stream: MediaStream | null = null let video: HTMLVideoElement | null = null - async function updateStream (device: MediaDeviceInfo): Promise { + async function updateStream(device: MediaDeviceInfo): Promise { const constraints = device !== null ? { video: { deviceId: { exact: device.deviceId }, width: { ideal: 1280 }, height: { ideal: 720 } } } diff --git a/plugins/media-resources/src/components/MediaPopupCamSelector.svelte b/plugins/media-resources/src/components/MediaPopupCamSelector.svelte index e3021ed158..a3d2c2bb36 100644 --- a/plugins/media-resources/src/components/MediaPopupCamSelector.svelte +++ b/plugins/media-resources/src/components/MediaPopupCamSelector.svelte @@ -33,7 +33,7 @@ $: access = $camAccess.state $: devices = mediaInfo.devices.filter((device) => device.kind === 'videoinput') - async function handleSelectCam (device: MediaDeviceInfo | null): Promise { + async function handleSelectCam(device: MediaDeviceInfo | null): Promise { if (device == null || mediaInfo === undefined) return if (mediaInfo.activeCamera?.deviceId === device?.deviceId) return const deviceId = device?.deviceId diff --git a/plugins/media-resources/src/components/MediaPopupItem.svelte b/plugins/media-resources/src/components/MediaPopupItem.svelte index 45fb3ee868..aa17190bc1 100644 --- a/plugins/media-resources/src/components/MediaPopupItem.svelte +++ b/plugins/media-resources/src/components/MediaPopupItem.svelte @@ -28,7 +28,7 @@ export let selectable: boolean = false export let disabled: boolean = false - function handleClick (): void { + function handleClick(): void { if (disabled) return if (expandable) { diff --git a/plugins/media-resources/src/components/MediaPopupMicSelector.svelte b/plugins/media-resources/src/components/MediaPopupMicSelector.svelte index de48a2a62b..9f404c9d38 100644 --- a/plugins/media-resources/src/components/MediaPopupMicSelector.svelte +++ b/plugins/media-resources/src/components/MediaPopupMicSelector.svelte @@ -30,7 +30,7 @@ $: access = $micAccess.state $: devices = mediaInfo.devices.filter((device) => device.kind === 'audioinput') - async function handleSelectMic (device: MediaDeviceInfo | null): Promise { + async function handleSelectMic(device: MediaDeviceInfo | null): Promise { if (device == null || mediaInfo === undefined) return if (mediaInfo.activeMicrophone?.deviceId === device?.deviceId) return const deviceId = device?.deviceId diff --git a/plugins/media-resources/src/components/MediaPopupSpkSelector.svelte b/plugins/media-resources/src/components/MediaPopupSpkSelector.svelte index 2b5c9c3666..96e42cc08a 100644 --- a/plugins/media-resources/src/components/MediaPopupSpkSelector.svelte +++ b/plugins/media-resources/src/components/MediaPopupSpkSelector.svelte @@ -29,7 +29,7 @@ $: access = $micAccess.state $: devices = mediaInfo.devices.filter((device) => device.kind === 'audiooutput') - async function handleSelectSpk (device: MediaDeviceInfo | null): Promise { + async function handleSelectSpk(device: MediaDeviceInfo | null): Promise { if (device == null) return if (mediaInfo.activeSpeaker?.deviceId === device?.deviceId) return const deviceId = device?.deviceId diff --git a/plugins/media-resources/src/components/MediaSettingsButton.svelte b/plugins/media-resources/src/components/MediaSettingsButton.svelte index bffe3e62fb..29351fc34a 100644 --- a/plugins/media-resources/src/components/MediaSettingsButton.svelte +++ b/plugins/media-resources/src/components/MediaSettingsButton.svelte @@ -27,7 +27,7 @@ let pressed = false - async function openPopup (): Promise { + async function openPopup(): Promise { pressed = true showPopup(MediaPopup, {}, anchor, () => { pressed = false diff --git a/plugins/media-resources/src/stores.ts b/plugins/media-resources/src/stores.ts index eaaa6b8647..4aadc7196d 100644 --- a/plugins/media-resources/src/stores.ts +++ b/plugins/media-resources/src/stores.ts @@ -36,8 +36,8 @@ export const state: Readable = derived(sessions, ($sessions) => { return { camera, microphone } }) -export const camAccess = createPermissionStore('camera' as PermissionName) -export const micAccess = createPermissionStore('microphone' as PermissionName) +export const camAccess = createPermissionStore('camera') +export const micAccess = createPermissionStore('microphone') function createPermissionStore (name: PermissionName): Readable { return readable({ state: 'prompt', ready: Promise.resolve() }, (set) => { diff --git a/plugins/media-resources/src/utils.ts b/plugins/media-resources/src/utils.ts index 140b6e8397..0d6265ed0c 100644 --- a/plugins/media-resources/src/utils.ts +++ b/plugins/media-resources/src/utils.ts @@ -90,7 +90,8 @@ function toggleDeviceState (kind: 'camera' | 'microphone'): void { class MediaSessionImpl extends (EventEmitter as unknown as new () => TypedEventEmitter) - implements MediaSession { + implements MediaSession +{ readonly state: MediaState constructor (state: MediaState) { diff --git a/plugins/media/.eslintrc.js b/plugins/media/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/media/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/media/eslint.config.mjs b/plugins/media/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/media/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/media/package.json b/plugins/media/package.json index fa5333c165..6b2af293f0 100644 --- a/plugins/media/package.json +++ b/plugins/media/package.json @@ -23,20 +23,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/events": "^3.0.3", - "typed-emitter": "^2.1.0" + "typed-emitter": "^2.1.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/media/src/index.ts b/plugins/media/src/index.ts index 866b202476..03f7498722 100644 --- a/plugins/media/src/index.ts +++ b/plugins/media/src/index.ts @@ -15,7 +15,7 @@ import { mediaId, mediaPlugin } from './plugin' -export * from './types' +export type * from './types' export * from './utils' export { mediaId } diff --git a/plugins/notification-assets/.eslintrc.js b/plugins/notification-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/notification-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/notification-assets/eslint.config.mjs b/plugins/notification-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/notification-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/notification-assets/package.json b/plugins/notification-assets/package.json index d5a8982a94..5e3ef80ecf 100644 --- a/plugins/notification-assets/package.json +++ b/plugins/notification-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/notification-assets/src/lang.ts b/plugins/notification-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/notification-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/notification-resources/.eslintrc.js b/plugins/notification-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/notification-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/notification-resources/eslint.config.mjs b/plugins/notification-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/notification-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/notification-resources/package.json b/plugins/notification-resources/package.json index dc6d91b78c..92d8749156 100644 --- a/plugins/notification-resources/package.json +++ b/plugins/notification-resources/package.json @@ -19,25 +19,24 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/plugins/notification-resources/src/components/BrowserNotificatator.svelte b/plugins/notification-resources/src/components/BrowserNotificatator.svelte index e0af7c4eda..e3f298d707 100644 --- a/plugins/notification-resources/src/components/BrowserNotificatator.svelte +++ b/plugins/notification-resources/src/components/BrowserNotificatator.svelte @@ -26,7 +26,7 @@ import { checkPermission, pushAllowed, subscribePush } from '../utils' import Notification from './Notification.svelte' - async function check (allowed: boolean): Promise { + async function check(allowed: boolean): Promise { if (allowed) { query.unsubscribe() return @@ -58,7 +58,7 @@ const client = getClient() const linkProviders = client.getModel().findAllSync(view.mixin.LinkIdProvider, {}) - async function getObjectIdFromLocation (loc: Location): Promise { + async function getObjectIdFromLocation(loc: Location): Promise { const appAlias = loc.path[2] const application = client.getModel().findAllSync(workbench.class.Application, { alias: appAlias })[0] @@ -78,7 +78,7 @@ } } - async function notify (value: BrowserNotification): Promise { + async function notify(value: BrowserNotification): Promise { const _id: Ref | undefined = value.objectId const getSidebarObject = await getResource(workbench.function.GetSidebarObject) @@ -106,7 +106,7 @@ await removeNotification(value) } - async function removeNotification (value: BrowserNotification): Promise { + async function removeNotification(value: BrowserNotification): Promise { if (account.role !== AccountRole.ReadOnlyGuest) { await client.remove(value) } diff --git a/plugins/notification-resources/src/components/CollaboratorEditor.svelte b/plugins/notification-resources/src/components/CollaboratorEditor.svelte index c12341e401..2a0e1c62f1 100644 --- a/plugins/notification-resources/src/components/CollaboratorEditor.svelte +++ b/plugins/notification-resources/src/components/CollaboratorEditor.svelte @@ -37,7 +37,7 @@ $: accounts = collaborators.map((c) => c.collaborator) - async function change (res: AccountUuid[]): Promise { + async function change(res: AccountUuid[]): Promise { const toAdd: AccountUuid[] = res.filter((a) => !accounts.includes(a)) const toRemove: Collaborator[] = collaborators.filter((a) => !res.includes(a.collaborator)) for (const account of toAdd) { diff --git a/plugins/notification-resources/src/components/DocNotifyContextCard.svelte b/plugins/notification-resources/src/components/DocNotifyContextCard.svelte index 85fb2ffbcd..aff56ae47e 100644 --- a/plugins/notification-resources/src/components/DocNotifyContextCard.svelte +++ b/plugins/notification-resources/src/components/DocNotifyContextCard.svelte @@ -90,7 +90,7 @@ groupedNotifications = res }) - function isTextMessage (_class: Ref>): boolean { + function isTextMessage(_class: Ref>): boolean { return hierarchy.isDerived(_class, chunter.class.ChatMessage) } @@ -102,7 +102,7 @@ return isMentionNotification(it) && isTextMessage(it.mentionedInClass) } - async function groupNotificationsByUser ( + async function groupNotificationsByUser( notifications: WithLookup[] ): Promise> { const result: Array = [] @@ -142,7 +142,7 @@ return result } - function showMenu (ev: MouseEvent): void { + function showMenu(ev: MouseEvent): void { ev.stopPropagation() ev.preventDefault() showPopup( @@ -165,15 +165,15 @@ handleActionMenuOpened() } - function handleActionMenuOpened (): void { + function handleActionMenuOpened(): void { isActionMenuOpened = true } - function handleActionMenuClosed (): void { + function handleActionMenuClosed(): void { isActionMenuOpened = false } - async function checkContext (): Promise { + async function checkContext(): Promise { dispatch('archive') } @@ -183,7 +183,7 @@ // return canGroup(first) // } - function getKey (group: InboxNotification[]): string { + function getKey(group: InboxNotification[]): string { return group.map((it) => it._id).join('-') } diff --git a/plugins/notification-resources/src/components/DocNotifyContextPresenter.svelte b/plugins/notification-resources/src/components/DocNotifyContextPresenter.svelte index 56f39fd41c..f77ab1ccc0 100644 --- a/plugins/notification-resources/src/components/DocNotifyContextPresenter.svelte +++ b/plugins/notification-resources/src/components/DocNotifyContextPresenter.svelte @@ -31,7 +31,7 @@ object = res[0] }) - async function getTitle (object: Doc) { + async function getTitle(object: Doc) { if (object._class === chunter.class.DirectMessage) { return await getDocTitle(client, object._id, object._class, object) } diff --git a/plugins/notification-resources/src/components/Notification.svelte b/plugins/notification-resources/src/components/Notification.svelte index c02edc80c2..8f45a39be7 100644 --- a/plugins/notification-resources/src/components/Notification.svelte +++ b/plugins/notification-resources/src/components/Notification.svelte @@ -30,7 +30,7 @@ sender = undefined } - async function openChannelInSidebar (): Promise { + async function openChannelInSidebar(): Promise { if (!value.onClickLocation) return const { onClickLocation } = value let _id: Ref | undefined = value.objectId diff --git a/plugins/notification-resources/src/components/inbox/ActivityInboxNotificationPresenter.svelte b/plugins/notification-resources/src/components/inbox/ActivityInboxNotificationPresenter.svelte index b06f86fe0e..18065412a9 100644 --- a/plugins/notification-resources/src/components/inbox/ActivityInboxNotificationPresenter.svelte +++ b/plugins/notification-resources/src/components/inbox/ActivityInboxNotificationPresenter.svelte @@ -44,7 +44,7 @@ $: void updateDisplayMessage(value.combinedMessages) - async function updateDisplayMessage (messages: ActivityMessage[]): Promise { + async function updateDisplayMessage(messages: ActivityMessage[]): Promise { const combinedMessages = combineActivityMessages(sortActivityMessages(messages)) displayMessage = combinedMessages[0] @@ -56,7 +56,7 @@ $: updateViewlet(viewlets, displayMessage) - function matchViewlet (viewlet: ActivityNotificationViewlet, message: DisplayActivityMessage): boolean { + function matchViewlet(viewlet: ActivityNotificationViewlet, message: DisplayActivityMessage): boolean { const hierarchy = client.getHierarchy() const matched = matchQuery([message], viewlet.messageMatch, message._class, hierarchy, true)[0] if (matched !== undefined) return true @@ -74,7 +74,7 @@ return false } - function updateViewlet (viewlets: ActivityNotificationViewlet[], message?: DisplayActivityMessage): void { + function updateViewlet(viewlets: ActivityNotificationViewlet[], message?: DisplayActivityMessage): void { if (viewlets.length === 0 || message === undefined) { viewlet = undefined return @@ -95,7 +95,7 @@ viewlet = undefined } - async function getAllActions (value: ActivityInboxNotification): Promise { + async function getAllActions(value: ActivityInboxNotification): Promise { const notificationActions = await getActions(client, value, notification.class.InboxNotification) const result: Action[] = [] diff --git a/plugins/notification-resources/src/components/inbox/CommonInboxNotificationPresenter.svelte b/plugins/notification-resources/src/components/inbox/CommonInboxNotificationPresenter.svelte index edc47dc967..9bbb978d75 100644 --- a/plugins/notification-resources/src/components/inbox/CommonInboxNotificationPresenter.svelte +++ b/plugins/notification-resources/src/components/inbox/CommonInboxNotificationPresenter.svelte @@ -28,7 +28,7 @@ $: void updateContent(value.message, value.messageHtml) - async function updateContent (message?: IntlString, messageHtml?: Markup): Promise { + async function updateContent(message?: IntlString, messageHtml?: Markup): Promise { if (messageHtml !== undefined) { content = messageHtml } else if (message !== undefined) { diff --git a/plugins/notification-resources/src/components/inbox/Inbox.svelte b/plugins/notification-resources/src/components/inbox/Inbox.svelte index fa2b7edcb0..a185987f47 100644 --- a/plugins/notification-resources/src/components/inbox/Inbox.svelte +++ b/plugins/notification-resources/src/components/inbox/Inbox.svelte @@ -133,7 +133,7 @@ ) $: void updateInboxData($notificationsByContextStore, archivedNotifications, showArchive) - async function updateInboxData ( + async function updateInboxData( notificationsByContext: Map, InboxNotification[]>, archivedNotifications: InboxNotification[], showArchive: boolean @@ -163,7 +163,7 @@ isContextsLoaded = true }) - async function syncLocation (newLocation: Location): Promise { + async function syncLocation(newLocation: Location): Promise { const token = ++syncLocationToken const loc = await resolveLocation(newLocation) if (token !== syncLocationToken) return @@ -219,7 +219,7 @@ $: void updateSelectedPanel(selectedContext, urlObjectClass) $: void updateTabItems(inboxData, $contextsStore) - async function updateTabItems (inboxData: InboxData, notifyContexts: DocNotifyContext[]): Promise { + async function updateTabItems(inboxData: InboxData, notifyContexts: DocNotifyContext[]): Promise { const displayClasses = new Set( notifyContexts.filter(({ _id }) => inboxData.has(_id)).map(({ objectClass }) => objectClass) ) @@ -255,13 +255,13 @@ tabItems = [allTab].concat(tabs.sort((a, b) => (a.label ?? '').localeCompare(b.label ?? ''))) } - function selectTab (event: CustomEvent): void { + function selectTab(event: CustomEvent): void { if (event.detail !== undefined) { selectedTabId = event.detail.id } } - async function selectContext (event?: CustomEvent): Promise { + async function selectContext(event?: CustomEvent): Promise { closePanel() selectedContext = event?.detail?.context selectedContextId = selectedContext?._id @@ -275,7 +275,7 @@ void selectInboxContext(linkProviders, selectedContext, selectedNotification, event?.detail.object) } - function isChunterChannel (selectedContext: DocNotifyContext, urlObjectClass?: Ref>): boolean { + function isChunterChannel(selectedContext: DocNotifyContext, urlObjectClass?: Ref>): boolean { const isActivityMessageContext = hierarchy.isDerived(selectedContext.objectClass, activity.class.ActivityMessage) const chunterClass = isActivityMessageContext ? (urlObjectClass ?? selectedContext.objectClass) @@ -283,7 +283,7 @@ return hierarchy.isDerived(chunterClass, chunter.class.ChunterSpace) } - async function updateSelectedPanel ( + async function updateSelectedPanel( selectedContext?: DocNotifyContext, urlObjectClass?: Ref> ): Promise { @@ -317,7 +317,7 @@ } } - function filterData ( + function filterData( filter: InboxNotificationsFilter, selectedTabId: string | number, inboxData: InboxData @@ -367,13 +367,13 @@ { size: 20, minSize: 20, maxSize: 50, float: 'aside' } ]) - function onArchiveToggled (): void { + function onArchiveToggled(): void { showArchive = !showArchive selectedTabId = allTab.id void selectContext(undefined) } - function onUnreadsToggled (): void { + function onUnreadsToggled(): void { filter = filter === 'unread' ? 'all' : 'unread' localStorage.setItem('inbox-filter', filter) void selectContext(undefined) diff --git a/plugins/notification-resources/src/components/inbox/InboxGroupedListView.svelte b/plugins/notification-resources/src/components/inbox/InboxGroupedListView.svelte index 91f36a2b4e..59628b6921 100644 --- a/plugins/notification-resources/src/components/inbox/InboxGroupedListView.svelte +++ b/plugins/notification-resources/src/components/inbox/InboxGroupedListView.svelte @@ -70,7 +70,7 @@ } } - function updateDisplayData (data: InboxData): void { + function updateDisplayData(data: InboxData): void { let result: [Ref, DisplayInboxNotification[]][] = Array.from(data.entries()) if (archivedContexts.size > 0) { result = result.filter(([contextId]) => { @@ -87,7 +87,7 @@ ) } - async function archiveContext (listSelection: number): Promise { + async function archiveContext(listSelection: number): Promise { const contextId = displayData[listSelection]?.[0] const context = $contextByIdStore.get(contextId) if (contextId === undefined || context === undefined) { @@ -118,7 +118,7 @@ archivingContexts = archivingContexts } - async function onKeydown (key: KeyboardEvent): Promise { + async function onKeydown(key: KeyboardEvent): Promise { if (key.code === 'ArrowUp') { key.stopPropagation() key.preventDefault() @@ -159,12 +159,12 @@ element.focus() } - function getContextKey (index: number): string { + function getContextKey(index: number): string { const contextId = displayData[index][0] return contextId ?? index.toString() } - function selectIndex (index: number): void { + function selectIndex(index: number): void { if (displayData.length === 0) return list.select(Math.max(0, Math.min(index, displayData.length - 1))) diff --git a/plugins/notification-resources/src/components/inbox/InboxMenuButton.svelte b/plugins/notification-resources/src/components/inbox/InboxMenuButton.svelte index 7117f559d7..8e1dbd16b9 100644 --- a/plugins/notification-resources/src/components/inbox/InboxMenuButton.svelte +++ b/plugins/notification-resources/src/components/inbox/InboxMenuButton.svelte @@ -19,7 +19,7 @@ import notification from '../../plugin' import { archiveAll, readAll, unreadAll } from '../../utils' - async function onSelect (id?: 'archive' | 'read' | 'unread'): Promise { + async function onSelect(id?: 'archive' | 'read' | 'unread'): Promise { if (id == null) return if (id === 'archive') { diff --git a/plugins/notification-resources/src/components/inbox/InboxNotificationPresenter.svelte b/plugins/notification-resources/src/components/inbox/InboxNotificationPresenter.svelte index 4b2e90e4a1..90a1ea0eee 100644 --- a/plugins/notification-resources/src/components/inbox/InboxNotificationPresenter.svelte +++ b/plugins/notification-resources/src/components/inbox/InboxNotificationPresenter.svelte @@ -36,19 +36,19 @@ const client = getClient() const hierarchy = client.getHierarchy() - function asDisplayActivityNotification (notification: DisplayInboxNotification): DisplayActivityInboxNotification { + function asDisplayActivityNotification(notification: DisplayInboxNotification): DisplayActivityInboxNotification { return notification as DisplayActivityInboxNotification } - function asMentionNotification (notification: DisplayInboxNotification): MentionInboxNotification { + function asMentionNotification(notification: DisplayInboxNotification): MentionInboxNotification { return notification as MentionInboxNotification } - function asReactionNotification (notification: DisplayInboxNotification): ReactionInboxNotification { + function asReactionNotification(notification: DisplayInboxNotification): ReactionInboxNotification { return notification as ReactionInboxNotification } - function asCommonNotification (notification: DisplayInboxNotification): CommonInboxNotification { + function asCommonNotification(notification: DisplayInboxNotification): CommonInboxNotification { return notification as CommonInboxNotification } diff --git a/plugins/notification-resources/src/components/inbox/SettingsButton.svelte b/plugins/notification-resources/src/components/inbox/SettingsButton.svelte index b5da214e32..681c886c53 100644 --- a/plugins/notification-resources/src/components/inbox/SettingsButton.svelte +++ b/plugins/notification-resources/src/components/inbox/SettingsButton.svelte @@ -20,7 +20,7 @@ export let items: SettingItem[] = [] - function click (e: MouseEvent): void { + function click(e: MouseEvent): void { showPopup(SettingsPopup, { items }, eventToHTMLElement(e)) } diff --git a/plugins/notification-resources/src/components/inbox/SettingsPopup.svelte b/plugins/notification-resources/src/components/inbox/SettingsPopup.svelte index bef20dd509..bc8642a92e 100644 --- a/plugins/notification-resources/src/components/inbox/SettingsPopup.svelte +++ b/plugins/notification-resources/src/components/inbox/SettingsPopup.svelte @@ -26,7 +26,7 @@ let selection = 0 let list: ListView - export function onKeydown (key: KeyboardEvent): boolean { + export function onKeydown(key: KeyboardEvent): boolean { if (key.code === 'Tab') { dispatch('close') key.preventDefault() @@ -72,13 +72,13 @@ popupElement.focus() } - function selectIndex (index: number): void { + function selectIndex(index: number): void { if (items.length === 0) return list.select(Math.max(0, Math.min(index, items.length - 1))) } - function toggleSelectedItem (): void { + function toggleSelectedItem(): void { const item = items[selection] if (item === undefined) return diff --git a/plugins/notification-resources/src/components/settings/GeneralPreferencesGroup.svelte b/plugins/notification-resources/src/components/settings/GeneralPreferencesGroup.svelte index 14e1c6537e..7b6275b015 100644 --- a/plugins/notification-resources/src/components/settings/GeneralPreferencesGroup.svelte +++ b/plugins/notification-resources/src/components/settings/GeneralPreferencesGroup.svelte @@ -28,7 +28,7 @@ .findAllSync(notification.class.NotificationProvider, {}) .sort((provider1, provider2) => provider1.order - provider2.order) - function getProviderStatus (ref: Ref): boolean { + function getProviderStatus(ref: Ref): boolean { const provider = providers.find(({ _id }) => _id === ref) if (provider === undefined) return false @@ -37,7 +37,7 @@ return setting?.enabled ?? provider.defaultEnabled } - async function updateStatus (ref: Ref, enabled: boolean): Promise { + async function updateStatus(ref: Ref, enabled: boolean): Promise { const setting = $providersSettings.find(({ attachedTo }) => attachedTo === ref) if (setting !== undefined) { await client.update(setting, { enabled }) @@ -50,7 +50,7 @@ } } - async function onToggle (event: CustomEvent): Promise { + async function onToggle(event: CustomEvent): Promise { const provider = event.detail if (provider == null) return diff --git a/plugins/notification-resources/src/components/settings/NotificationGroupSetting.svelte b/plugins/notification-resources/src/components/settings/NotificationGroupSetting.svelte index 58394ffcab..bdcd49ec1b 100644 --- a/plugins/notification-resources/src/components/settings/NotificationGroupSetting.svelte +++ b/plugins/notification-resources/src/components/settings/NotificationGroupSetting.svelte @@ -46,7 +46,7 @@ $: types = client.getModel().findAllSync(notification.class.NotificationType, { group }) $: typesMap = toIdMap(types) - function getStatus ( + function getStatus( settings: Map, NotificationTypeSetting[]>, type: Ref, provider: Ref @@ -62,7 +62,7 @@ return typeValue.defaultEnabled } - async function onToggle ( + async function onToggle( typeId: Ref, providerId: Ref, value: boolean @@ -94,7 +94,7 @@ } } - function getTypeSetting ( + function getTypeSetting( map: Map, NotificationTypeSetting[]>, type: Ref, provider: Ref @@ -108,7 +108,7 @@ return type._class === notification.class.NotificationType } - function getLabel (type: NotificationType): IntlString { + function getLabel(type: NotificationType): IntlString { if (isNotificationType(type) && type.attachedToClass !== undefined) { return notification.string.AddedRemoved } @@ -116,7 +116,7 @@ return notification.string.Change } - function isIgnored (type: Ref, provider: NotificationProvider): boolean { + function isIgnored(type: Ref, provider: NotificationProvider): boolean { const ignored = providerDefaults.some((it) => provider._id === it.provider && it.ignoredTypes.includes(type)) if (ignored) return true @@ -130,7 +130,7 @@ return false } - async function getFilteredProviders ( + async function getFilteredProviders( providers: NotificationProvider[], types: NotificationType[], providersSettings: NotificationProviderSetting[] diff --git a/plugins/notification-resources/src/components/settings/WebpushesPreferencesPresenter.svelte b/plugins/notification-resources/src/components/settings/WebpushesPreferencesPresenter.svelte index 5f5393a55b..e7a2e613d6 100644 --- a/plugins/notification-resources/src/components/settings/WebpushesPreferencesPresenter.svelte +++ b/plugins/notification-resources/src/components/settings/WebpushesPreferencesPresenter.svelte @@ -56,7 +56,7 @@ return setting?.enabled ?? true } - async function toggle (sub: PushSubscription): Promise { + async function toggle(sub: PushSubscription): Promise { const setting = settings.find(({ attachedTo }) => attachedTo === sub._id) const currentEnabled: boolean = setting !== undefined ? Boolean(setting.enabled) : true const enabled = !currentEnabled @@ -71,7 +71,7 @@ } } - async function remove (sub: PushSubscription): Promise { + async function remove(sub: PushSubscription): Promise { showPopup( MessageBox, { @@ -104,7 +104,7 @@ let currentEndpoint: string | undefined - async function updateCurrentEndpoint (): Promise { + async function updateCurrentEndpoint(): Promise { if (!('serviceWorker' in navigator)) return const loc = getCurrentLocation() const registration = await navigator.serviceWorker.getRegistration(`/${loc.path[0]}/${loc.path[1]}`) @@ -125,7 +125,7 @@ let subscribing = false - async function subscribe (): Promise { + async function subscribe(): Promise { if (subscribing) return subscribing = true const subscribeResult = await subscribePush() @@ -157,10 +157,10 @@ : publicKey === undefined ? notification.string.PushNotConfigured : !browserSupported - ? notification.string.PushNotSupported - : permissionDenied - ? notification.string.PushDenied - : undefined + ? notification.string.PushNotSupported + : permissionDenied + ? notification.string.PushDenied + : undefined $: buttonDisabled = desktopPlatform || alreadySubscribed || publicKey === undefined || !browserSupported || permissionDenied diff --git a/plugins/notification-resources/src/utils.ts b/plugins/notification-resources/src/utils.ts index 3246ac25e7..3949a667ce 100644 --- a/plugins/notification-resources/src/utils.ts +++ b/plugins/notification-resources/src/utils.ts @@ -659,12 +659,12 @@ export async function selectInboxContext ( object?._id === objectId ? (object as ThreadMessage) : await client.findOne( - chunter.class.ThreadMessage, - { - _id: objectId as Ref - }, - { projection: { _id: 1, attachedTo: 1 } } - ) + chunter.class.ThreadMessage, + { + _id: objectId as Ref + }, + { projection: { _id: 1, attachedTo: 1 } } + ) void navigateToInboxDoc( linkProviders, diff --git a/plugins/notification/.eslintrc.js b/plugins/notification/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/notification/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/notification/eslint.config.mjs b/plugins/notification/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/notification/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/notification/package.json b/plugins/notification/package.json index ab86a45599..4d22a6282a 100644 --- a/plugins/notification/package.json +++ b/plugins/notification/package.json @@ -24,19 +24,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "sass": "^1.80.0", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/plugins/notification/src/index.ts b/plugins/notification/src/index.ts index 4a81d64179..9fc4c95a0a 100644 --- a/plugins/notification/src/index.ts +++ b/plugins/notification/src/index.ts @@ -44,7 +44,7 @@ import { PersonSpace } from '@hcengineering/contact' import { Readable, Writable } from './types' -export * from './types' +export type * from './types' export const DOMAIN_NOTIFICATION = 'notification' as Domain export const DOMAIN_DOC_NOTIFY = 'notification-dnc' as Domain @@ -476,7 +476,7 @@ const notification = plugin(notificationId, { CheckPushPermission: '' as Resource<(value: boolean) => Promise>, GetInboxNotificationsClient: '' as Resource, HasInboxNotifications: '' as Resource< - (notificationsByContext: Map, InboxNotification[]>) => Promise + (notificationsByContext: Map, InboxNotification[]>) => Promise >, IsNotificationAllowed: '' as Resource<(type: NotificationType, providerId: Ref) => boolean> }, diff --git a/plugins/onboard-assets/.eslintrc.js b/plugins/onboard-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/onboard-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/onboard-assets/eslint.config.mjs b/plugins/onboard-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/onboard-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/onboard-assets/package.json b/plugins/onboard-assets/package.json index 3c7dad58ca..7f39a20ec4 100644 --- a/plugins/onboard-assets/package.json +++ b/plugins/onboard-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/onboard-assets/src/lang.ts b/plugins/onboard-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/onboard-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/onboard-resources/.eslintrc.js b/plugins/onboard-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/onboard-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/onboard-resources/eslint.config.mjs b/plugins/onboard-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/onboard-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/onboard-resources/package.json b/plugins/onboard-resources/package.json index 0fce1a7a06..504a37e838 100644 --- a/plugins/onboard-resources/package.json +++ b/plugins/onboard-resources/package.json @@ -20,23 +20,22 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", "url-loader": "~4.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/onboard-resources/src/components/Auth.svelte b/plugins/onboard-resources/src/components/Auth.svelte index 48e1de9074..ee74e1d80f 100644 --- a/plugins/onboard-resources/src/components/Auth.svelte +++ b/plugins/onboard-resources/src/components/Auth.svelte @@ -21,7 +21,7 @@ } }) - function isWorkspaceLoginInfo (info: WorkspaceLoginInfo | LoginInfo): info is WorkspaceLoginInfo { + function isWorkspaceLoginInfo(info: WorkspaceLoginInfo | LoginInfo): info is WorkspaceLoginInfo { return (info as WorkspaceLoginInfo).workspace !== undefined } diff --git a/plugins/onboard-resources/src/components/Form.svelte b/plugins/onboard-resources/src/components/Form.svelte index d60e5df7dc..efa165a459 100644 --- a/plugins/onboard-resources/src/components/Form.svelte +++ b/plugins/onboard-resources/src/components/Form.svelte @@ -56,7 +56,7 @@ let valid: boolean = false - async function validateAsync (language: string): Promise { + async function validateAsync(language: string): Promise { if (ignoreInitialValidation) return true for (const field of fields) { const v = object[field.name] @@ -101,7 +101,7 @@ let inAction = false - function performAction (action: Action): void { + function performAction(action: Action): void { for (const field of fields) { trim(field.name) } @@ -112,7 +112,7 @@ } onMount(() => (ignoreInitialValidation = false)) - function trim (field: string): void { + function trim(field: string): void { object[field] = (object[field] as string).trim() } diff --git a/plugins/onboard-resources/src/components/OnboardApp.svelte b/plugins/onboard-resources/src/components/OnboardApp.svelte index cf569804a8..7e65291e86 100644 --- a/plugins/onboard-resources/src/components/OnboardApp.svelte +++ b/plugins/onboard-resources/src/components/OnboardApp.svelte @@ -50,7 +50,7 @@ onDestroy(location.subscribe(updatePageLoc)) - function updatePageLoc (loc: Location): void { + function updatePageLoc(loc: Location): void { const token = getMetadata(presentation.metadata.Token) page = (loc.path[1] as Pages) ?? (token != null ? 'selectWorkspace' : 'login') const allowedUnauthPages: Pages[] = ['onboard', 'auth'] @@ -59,7 +59,7 @@ } } - async function chooseToken (): Promise { + async function chooseToken(): Promise { if (page === 'auth') { // token handled by auth page return diff --git a/plugins/onboard-resources/src/components/OnboardForm.svelte b/plugins/onboard-resources/src/components/OnboardForm.svelte index f0d5b8e030..9a0c8c09d4 100644 --- a/plugins/onboard-resources/src/components/OnboardForm.svelte +++ b/plugins/onboard-resources/src/components/OnboardForm.svelte @@ -33,21 +33,21 @@ let account: LoginInfo | null | undefined = undefined let step: OnboardSteps = OnboardSteps.Workspace - function handleStepEvent (event: CustomEvent): void { + function handleStepEvent(event: CustomEvent): void { if (event.detail != null) { account = event.detail } handleNext(step) } - function handleNext (current: OnboardSteps): void { + function handleNext(current: OnboardSteps): void { const next = steps.indexOf(current) + 1 if (next < steps.length) { step = steps[next] } } - function isWorkspaceLoginInfo (info: WorkspaceLoginInfo | LoginInfo): info is WorkspaceLoginInfo { + function isWorkspaceLoginInfo(info: WorkspaceLoginInfo | LoginInfo): info is WorkspaceLoginInfo { return (info as WorkspaceLoginInfo).workspace !== undefined } diff --git a/plugins/onboard/.eslintrc.js b/plugins/onboard/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/onboard/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/onboard/eslint.config.mjs b/plugins/onboard/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/onboard/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/onboard/package.json b/plugins/onboard/package.json index 1b71444333..9728e6a4b6 100644 --- a/plugins/onboard/package.json +++ b/plugins/onboard/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/openai/.eslintrc.js b/plugins/openai/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/openai/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/openai/eslint.config.mjs b/plugins/openai/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/openai/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/openai/package.json b/plugins/openai/package.json index 59a0c329bf..fa19027cae 100644 --- a/plugins/openai/package.json +++ b/plugins/openai/package.json @@ -23,20 +23,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier-plugin-svelte": "^3.4.0", - "@types/node": "^24.13.3" + "@types/node": "^24.13.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/preference-assets/.eslintrc.js b/plugins/preference-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/preference-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/preference-assets/eslint.config.mjs b/plugins/preference-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/preference-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/preference-assets/package.json b/plugins/preference-assets/package.json index 3aba95f486..aa90cc51bc 100644 --- a/plugins/preference-assets/package.json +++ b/plugins/preference-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/preference-assets/src/lang.ts b/plugins/preference-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/preference-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/preference/.eslintrc.js b/plugins/preference/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/preference/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/preference/eslint.config.mjs b/plugins/preference/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/preference/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/preference/package.json b/plugins/preference/package.json index c6cc1587a6..9ce7fabde0 100644 --- a/plugins/preference/package.json +++ b/plugins/preference/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/presence-resources/.eslintrc.js b/plugins/presence-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/presence-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/presence-resources/eslint.config.mjs b/plugins/presence-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/presence-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/presence-resources/package.json b/plugins/presence-resources/package.json index 8e28eedc84..e2c98bf954 100644 --- a/plugins/presence-resources/package.json +++ b/plugins/presence-resources/package.json @@ -20,22 +20,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/presence-resources/src/components/PresenceAvatars.svelte b/plugins/presence-resources/src/components/PresenceAvatars.svelte index eeec1764ed..6b336ebbb1 100644 --- a/plugins/presence-resources/src/components/PresenceAvatars.svelte +++ b/plugins/presence-resources/src/components/PresenceAvatars.svelte @@ -37,7 +37,7 @@ $: overLimit = persons.length > limit $: adaptive = checkAdaptiveMatching($deviceInfo.size, 'md') || overLimit - async function updatePresence (presenceInfo: Map>): Promise { + async function updatePresence(presenceInfo: Map>): Promise { const personByRef = await getPersonsByPersonRefs(Array.from(presenceInfo.values())) persons = presenceInfo .values() @@ -46,7 +46,7 @@ .toArray() } - function onPresence (presence: Map>): void { + function onPresence(presence: Map>): void { presenceInfo = presence } diff --git a/plugins/presence-resources/src/index.ts b/plugins/presence-resources/src/index.ts index 954748a2c3..dcc65758f0 100644 --- a/plugins/presence-resources/src/index.ts +++ b/plugins/presence-resources/src/index.ts @@ -24,7 +24,7 @@ export { Presence, PresenceAvatars } export * from './presence' export * from './typing' -export * from './types' +export type * from './types' export default async (): Promise => ({ component: { diff --git a/plugins/presence/.eslintrc.js b/plugins/presence/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/presence/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/presence/eslint.config.mjs b/plugins/presence/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/presence/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/presence/package.json b/plugins/presence/package.json index 102b926ce0..6a7e3e6b76 100644 --- a/plugins/presence/package.json +++ b/plugins/presence/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/presence/src/index.ts b/plugins/presence/src/index.ts index 06c114f9ae..0a1ef50fbd 100644 --- a/plugins/presence/src/index.ts +++ b/plugins/presence/src/index.ts @@ -15,7 +15,7 @@ import { presenceId, presencePlugin } from './plugin' -export * from './types' +export type * from './types' export { presenceId } export default presencePlugin diff --git a/plugins/print-assets/.eslintrc.js b/plugins/print-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/print-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/print-assets/eslint.config.mjs b/plugins/print-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/print-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/print-assets/package.json b/plugins/print-assets/package.json index de85596fd2..c5e69b4b71 100644 --- a/plugins/print-assets/package.json +++ b/plugins/print-assets/package.json @@ -26,20 +26,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier-plugin-svelte": "^3.4.0", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -55,8 +55,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/print-assets/src/lang.ts b/plugins/print-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/print-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/print-resources/.eslintrc.js b/plugins/print-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/print-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/print-resources/eslint.config.mjs b/plugins/print-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/print-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/print-resources/package.json b/plugins/print-resources/package.json index f69cf2a8a0..131fd8ad80 100644 --- a/plugins/print-resources/package.json +++ b/plugins/print-resources/package.json @@ -21,22 +21,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/print-resources/src/components/DOCXViewer.svelte b/plugins/print-resources/src/components/DOCXViewer.svelte index 0069571c32..c8f217a93b 100644 --- a/plugins/print-resources/src/components/DOCXViewer.svelte +++ b/plugins/print-resources/src/components/DOCXViewer.svelte @@ -24,7 +24,7 @@ const token = getMetadata(presentation.metadata.Token) ?? '' - async function loadPreview (file: Ref | undefined): Promise { + async function loadPreview(file: Ref | undefined): Promise { request?.abort() const controller = new AbortController() request = controller diff --git a/plugins/print-resources/src/components/PrintBulkToPDF.svelte b/plugins/print-resources/src/components/PrintBulkToPDF.svelte index f718f144df..33e87cbb58 100644 --- a/plugins/print-resources/src/components/PrintBulkToPDF.svelte +++ b/plugins/print-resources/src/components/PrintBulkToPDF.svelte @@ -41,17 +41,17 @@ $: successCount = results.filter((r) => r.error === undefined).length $: failedList = results.filter((r) => r.error !== undefined) - function cancel (): void { + function cancel(): void { cancelled = true close() } - function openPdf (result: PdfResult): void { + function openPdf(result: PdfResult): void { if (result.error !== undefined) return selectedResult = result } - async function doDownloadAll (): Promise { + async function doDownloadAll(): Promise { downloadAllLoading = true try { await downloadAllPdfs(results) @@ -62,7 +62,7 @@ const dispatch = createEventDispatcher() - function close (): void { + function close(): void { dispatch('close') } diff --git a/plugins/print-resources/src/components/PrintToPDF.svelte b/plugins/print-resources/src/components/PrintToPDF.svelte index b16c45e4a8..604bec9551 100644 --- a/plugins/print-resources/src/components/PrintToPDF.svelte +++ b/plugins/print-resources/src/components/PrintToPDF.svelte @@ -48,7 +48,7 @@ } ] satisfies DropdownIntlItem[] - function nextPrintRequest (): number { + function nextPrintRequest(): number { printRequest += 1 return printRequest } @@ -116,14 +116,14 @@ void createLinkIfMissing(object) } - async function getObjectLocation (obj: Doc): Promise { + async function getObjectLocation(obj: Doc): Promise { const panelComponent = client.getHierarchy().classHierarchyMixin(obj._class, view.mixin.ObjectPanel) const comp = panelComponent?.component ?? view.component.EditDoc return await getObjectLinkFragment(client.getHierarchy(), obj, {}, comp) } - async function createLinkIfMissing (obj: Doc): Promise { + async function createLinkIfMissing(obj: Doc): Promise { if (link?.attachedTo === obj._id) { return } @@ -135,25 +135,25 @@ } } - async function updateDocTitle (obj: Doc): Promise { + async function updateDocTitle(obj: Doc): Promise { const value = (await getDocTitle(client, obj._id, obj._class, obj)) ?? '' title = value !== '' ? value + '.pdf' : '' } - function toggleOrientation (): void { + function toggleOrientation(): void { nextPrintRequest() orientation = orientation === 'landscape' ? 'portrait' : 'landscape' file = undefined isLoading = true } - function handlePrintSetting (id: 'landscape' | 'contentOnly'): void { + function handlePrintSetting(id: 'landscape' | 'contentOnly'): void { if (id === 'landscape') { toggleOrientation() } } - function openPrintSettings (event: MouseEvent): void { + function openPrintSettings(event: MouseEvent): void { showPopup( ModernPopup, { items: printSettingsItems }, diff --git a/plugins/print/.eslintrc.js b/plugins/print/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/print/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/print/eslint.config.mjs b/plugins/print/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/print/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/print/package.json b/plugins/print/package.json index 1ac08899f8..ec8ae1c39f 100644 --- a/plugins/print/package.json +++ b/plugins/print/package.json @@ -23,19 +23,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "prettier-plugin-svelte": "^3.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/process-assets/.eslintrc.js b/plugins/process-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/process-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/process-assets/eslint.config.mjs b/plugins/process-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/process-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/process-assets/package.json b/plugins/process-assets/package.json index d6705a9377..c6c7d7ca0f 100644 --- a/plugins/process-assets/package.json +++ b/plugins/process-assets/package.json @@ -26,20 +26,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier-plugin-svelte": "^3.4.0", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -55,8 +55,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/process-assets/src/lang.ts b/plugins/process-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/process-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/process-resources/.eslintrc.js b/plugins/process-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/process-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/process-resources/eslint.config.mjs b/plugins/process-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/process-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/process-resources/package.json b/plugins/process-resources/package.json index efac93f482..a5c9f2e0c6 100644 --- a/plugins/process-resources/package.json +++ b/plugins/process-resources/package.json @@ -19,26 +19,25 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "@types/html-to-text": "^8.1.1", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/process-resources/src/components/ApproveRequestButtons.svelte b/plugins/process-resources/src/components/ApproveRequestButtons.svelte index 0a853e72c6..9deff5f89e 100644 --- a/plugins/process-resources/src/components/ApproveRequestButtons.svelte +++ b/plugins/process-resources/src/components/ApproveRequestButtons.svelte @@ -26,7 +26,7 @@ const client = getClient() - async function changeApprovalRequestState (ev: MouseEvent, isRejection: boolean): Promise { + async function changeApprovalRequestState(ev: MouseEvent, isRejection: boolean): Promise { showPopup(SignatureDialog, { isRejection }, eventToHTMLElement(ev), async (res) => { if (!res) return diff --git a/plugins/process-resources/src/components/ApproveRequestPresenter.svelte b/plugins/process-resources/src/components/ApproveRequestPresenter.svelte index 726d946190..1cd77d66e7 100644 --- a/plugins/process-resources/src/components/ApproveRequestPresenter.svelte +++ b/plugins/process-resources/src/components/ApproveRequestPresenter.svelte @@ -21,7 +21,7 @@ export let value: ApproveRequest - export function formatSignatureDate (date: number): string { + export function formatSignatureDate(date: number): string { const timeZone: string = getUserTimezone() return new Date(date).toLocaleDateString('default', { diff --git a/plugins/process-resources/src/components/ErrorTooltip.svelte b/plugins/process-resources/src/components/ErrorTooltip.svelte index f68270bc3c..dda980e38e 100644 --- a/plugins/process-resources/src/components/ErrorTooltip.svelte +++ b/plugins/process-resources/src/components/ErrorTooltip.svelte @@ -20,7 +20,7 @@ export let value: ExecutionError[] - async function fillProps (value: ExecutionError[]): Promise { + async function fillProps(value: ExecutionError[]): Promise { for (const val of value) { for (const key in val.intlProps) { try { diff --git a/plugins/process-resources/src/components/ExecutionDetails.svelte b/plugins/process-resources/src/components/ExecutionDetails.svelte index 23a9ca40ff..de69ea889d 100644 --- a/plugins/process-resources/src/components/ExecutionDetails.svelte +++ b/plugins/process-resources/src/components/ExecutionDetails.svelte @@ -45,7 +45,7 @@ } ) let docs: Doc[] = [] - function select (): void { + function select(): void { listProvider.update(docs) listProvider.updateFocus(docs[0]) list?.select(0, undefined) diff --git a/plugins/process-resources/src/components/ExecutionMyToDos.svelte b/plugins/process-resources/src/components/ExecutionMyToDos.svelte index 67b864f6b9..9df13b56ad 100644 --- a/plugins/process-resources/src/components/ExecutionMyToDos.svelte +++ b/plugins/process-resources/src/components/ExecutionMyToDos.svelte @@ -47,13 +47,13 @@ todos = [] } - async function checkTodo (todo: ProcessToDo) { + async function checkTodo(todo: ProcessToDo) { await client.update(todo, { doneOn: new Date().getTime() }) } - function isRequest (todo: ProcessToDo): todo is ApproveRequest { + function isRequest(todo: ProcessToDo): todo is ApproveRequest { return todo._class === plugin.class.ApproveRequest } diff --git a/plugins/process-resources/src/components/ExecutonPresenter.svelte b/plugins/process-resources/src/components/ExecutonPresenter.svelte index db26da87f5..6a1cbeec7b 100644 --- a/plugins/process-resources/src/components/ExecutonPresenter.svelte +++ b/plugins/process-resources/src/components/ExecutonPresenter.svelte @@ -27,7 +27,7 @@ $: process = value?.$lookup?.process ?? client.getModel().findObject(value.process) - function open (): void { + function open(): void { showPopup( ExecutionDetails, { diff --git a/plugins/process-resources/src/components/NotifierExtension.svelte b/plugins/process-resources/src/components/NotifierExtension.svelte index 21a0bef2ba..401aee8b7d 100644 --- a/plugins/process-resources/src/components/NotifierExtension.svelte +++ b/plugins/process-resources/src/components/NotifierExtension.svelte @@ -37,14 +37,14 @@ } }) - async function notifyAll (events: ExecutionLog[]): Promise { + async function notifyAll(events: ExecutionLog[]): Promise { for (const event of events) { if (processed.has(event._id)) continue await notify(event) } } - async function notify (event: ExecutionLog): Promise { + async function notify(event: ExecutionLog): Promise { processed.add(event._id) const _process = client.getModel().findObject(event.process) addNotification( diff --git a/plugins/process-resources/src/components/ProcessAttribute.svelte b/plugins/process-resources/src/components/ProcessAttribute.svelte index 7438a9166c..b276f9863c 100644 --- a/plugins/process-resources/src/components/ProcessAttribute.svelte +++ b/plugins/process-resources/src/components/ProcessAttribute.svelte @@ -49,11 +49,11 @@ $: contextValue = parseContext(value) - function onChange (value: any | undefined): void { + function onChange(value: any | undefined): void { dispatch('change', value) } - function selectContext (e: MouseEvent): void { + function selectContext(e: MouseEvent): void { showPopup( ContextSelectorPopup, { @@ -68,7 +68,7 @@ ) } - function onSelect (res: SelectedContext | null): void { + function onSelect(res: SelectedContext | null): void { if (res === null) { value = undefined } else { diff --git a/plugins/process-resources/src/components/ProcessesExtension.svelte b/plugins/process-resources/src/components/ProcessesExtension.svelte index 4d93a008b0..e298213d21 100644 --- a/plugins/process-resources/src/components/ProcessesExtension.svelte +++ b/plugins/process-resources/src/components/ProcessesExtension.svelte @@ -67,7 +67,7 @@ } } - function add (e: MouseEvent): void { + function add(e: MouseEvent): void { if (readonly) { return } @@ -85,7 +85,7 @@ } ) let docs: Execution[] = [] - function select () { + function select() { listProvider.update(docs) listProvider.updateFocus(docs[0]) list?.select(0, undefined) @@ -125,7 +125,7 @@ let docsProvided = false - function checkForbiddenPermission (permissionsStore: PermissionsStore): boolean { + function checkForbiddenPermission(permissionsStore: PermissionsStore): boolean { return checkMyPermission(process.permission.ForbidRunProcess, card.space as Ref, permissionsStore) } diff --git a/plugins/process-resources/src/components/ProcessesHeaderExtension.svelte b/plugins/process-resources/src/components/ProcessesHeaderExtension.svelte index e43273da29..d11f38dee6 100644 --- a/plugins/process-resources/src/components/ProcessesHeaderExtension.svelte +++ b/plugins/process-resources/src/components/ProcessesHeaderExtension.svelte @@ -68,13 +68,13 @@ const client = getClient() - async function checkTodo (todo: ProcessToDo) { + async function checkTodo(todo: ProcessToDo) { await client.update(todo, { doneOn: new Date().getTime() }) } - async function performAction (action: EventButton) { + async function performAction(action: EventButton) { await client.createDoc(process.class.ProcessCustomEvent, action.space, { execution: action.execution, eventType: action.eventType, @@ -82,7 +82,7 @@ }) } - async function performRollback (execution: Execution) { + async function performRollback(execution: Execution) { await client.createDoc(process.class.ProcessCustomEvent, execution.space, { execution: execution._id, eventType: 'rollback', @@ -90,7 +90,7 @@ }) } - function getExecutionLabel (execution: Execution): string { + function getExecutionLabel(execution: Execution): string { const pr = client.getModel().findObject(execution.process) if (pr !== undefined) { return `${pr.name}: ` @@ -100,7 +100,7 @@ $: rollbacks = docs.filter((d) => d.rollback.length > 0) - function isRequest (todo: ProcessToDo): todo is ApproveRequest { + function isRequest(todo: ProcessToDo): todo is ApproveRequest { return todo._class === process.class.ApproveRequest } diff --git a/plugins/process-resources/src/components/ProcessesSection.svelte b/plugins/process-resources/src/components/ProcessesSection.svelte index ec2ede6192..ee761d0dab 100644 --- a/plugins/process-resources/src/components/ProcessesSection.svelte +++ b/plugins/process-resources/src/components/ProcessesSection.svelte @@ -37,7 +37,7 @@ const client = getClient() - async function add (): Promise { + async function add(): Promise { const initState = generateId() const id = await client.createDoc(process.class.Process, core.space.Model, { name: await translate(process.string.NewProcess, {}), @@ -81,14 +81,14 @@ } ) - function handleSelect (id: Ref): void { + function handleSelect(id: Ref): void { const loc = getCurrentLocation() loc.path[5] = process.component.ProcessEditor loc.path[6] = id navigate(loc, true) } - function handleImport (): void { + function handleImport(): void { const input = document.createElement('input') input.type = 'file' input.accept = '.json' diff --git a/plugins/process-resources/src/components/RequestsExtension.svelte b/plugins/process-resources/src/components/RequestsExtension.svelte index fa9b60c3d0..af7f68f104 100644 --- a/plugins/process-resources/src/components/RequestsExtension.svelte +++ b/plugins/process-resources/src/components/RequestsExtension.svelte @@ -55,7 +55,7 @@ } ) let docs: ApproveRequest[] = [] - function select () { + function select() { listProvider.update(docs) listProvider.updateFocus(docs[0]) list?.select(0, undefined) diff --git a/plugins/process-resources/src/components/RunProcessCardPopup.svelte b/plugins/process-resources/src/components/RunProcessCardPopup.svelte index e8788b9aa5..1f74d0e46e 100644 --- a/plugins/process-resources/src/components/RunProcessCardPopup.svelte +++ b/plugins/process-resources/src/components/RunProcessCardPopup.svelte @@ -39,7 +39,7 @@ const dispatch = createEventDispatcher() - async function runProcess (): Promise { + async function runProcess(): Promise { if (process === undefined || card === undefined) return const tx = await createExecution(card._id, process, card.space, client.txFactory) if (tx) await client.tx(tx) @@ -52,7 +52,7 @@ $: void filter(process) - async function filter (process: Ref | undefined): Promise { + async function filter(process: Ref | undefined): Promise { if (process === undefined) { ignoreObjects = [] return diff --git a/plugins/process-resources/src/components/RunProcessPopup.svelte b/plugins/process-resources/src/components/RunProcessPopup.svelte index 9bfcee5e22..6dd4aebd86 100644 --- a/plugins/process-resources/src/components/RunProcessPopup.svelte +++ b/plugins/process-resources/src/components/RunProcessPopup.svelte @@ -36,7 +36,7 @@ type PossibleProcessClass = Ref - function getCardPossibleClasses (card: Card): PossibleProcessClass[] { + function getCardPossibleClasses(card: Card): PossibleProcessClass[] { const ancestors = h.getAncestors(card._class) as PossibleProcessClass[] const res = new Set(ancestors) @@ -48,7 +48,7 @@ return [...res] } - function getPossibleClasses (): PossibleProcessClass[] { + function getPossibleClasses(): PossibleProcessClass[] { if (!value) { return [] } @@ -70,7 +70,7 @@ return [...res] } - async function filterProcesses (processes: Process[]): Promise { + async function filterProcesses(processes: Process[]): Promise { if (value === undefined) return [] const res: Process[] = [] const shouldCheck: Process[] = [] @@ -99,7 +99,7 @@ const dispatch = createEventDispatcher() - async function runProcess (_id: Ref): Promise { + async function runProcess(_id: Ref): Promise { if (!value) return for (const element of values) { const tx = await createExecution(element._id, _id, element.space, client.txFactory) diff --git a/plugins/process-resources/src/components/SignatureDialog.svelte b/plugins/process-resources/src/components/SignatureDialog.svelte index 9aacd6ca99..81734dfb21 100644 --- a/plugins/process-resources/src/components/SignatureDialog.svelte +++ b/plugins/process-resources/src/components/SignatureDialog.svelte @@ -66,7 +66,7 @@ let status = OK - async function submit (): Promise { + async function submit(): Promise { if (object.email === '' || object.password === '') { return } @@ -78,7 +78,7 @@ } } - async function validateAccount (email: string, password: string): Promise { + async function validateAccount(email: string, password: string): Promise { const accountClient = getAccountClient(accountsUrl) try { @@ -104,7 +104,7 @@ password: login.string.Password } - async function validate (): Promise { + async function validate(): Promise { for (const field of Object.keys(object)) { const k = field as keyof LoginInfo if (object[k] === '') { diff --git a/plugins/process-resources/src/components/attributeEditors/ConfigurePopup.svelte b/plugins/process-resources/src/components/attributeEditors/ConfigurePopup.svelte index 563a4236bf..73ad4542aa 100644 --- a/plugins/process-resources/src/components/attributeEditors/ConfigurePopup.svelte +++ b/plugins/process-resources/src/components/attributeEditors/ConfigurePopup.svelte @@ -64,7 +64,7 @@ } } - function getReduceFunctions (): Ref[] { + function getReduceFunctions(): Ref[] { const model = client.getModel() const h = client.getHierarchy() const res: Ref[] = [] @@ -85,7 +85,7 @@ $: functionsLength = contextValue.functions?.length ?? 0 - function getAvailableFunctions ( + function getAvailableFunctions( functions: Func[] | undefined, attrClass: Ref>, category: AttributeCategory @@ -110,8 +110,8 @@ $: funcs = (contextValue.functions?.length ?? 0) > 0 ? client - .getModel() - .findAllSync(plugin.class.ProcessFunction, { _id: { $in: contextValue.functions?.map((it) => it.func) } }) + .getModel() + .findAllSync(plugin.class.ProcessFunction, { _id: { $in: contextValue.functions?.map((it) => it.func) } }) : [] $: sourceFunc = @@ -121,7 +121,7 @@ $: functionButtonIndex = functionsLength + (sourceFunc !== undefined ? 1 : 0) - function onFallback (): void { + function onFallback(): void { showPopup(FallbackEditor, { contextValue, attribute }, elements[functionButtonIndex + 1], (res) => { if (res != null) { if (res.value !== undefined) { @@ -135,27 +135,27 @@ }) } - function onFunctionSelect (e: Ref): void { + function onFunctionSelect(e: Ref): void { onFunction(e, {}, addFunction) } - function addFunction (func: Func): void { + function addFunction(func: Func): void { const arr = contextValue.functions ?? [] arr.push(func) contextValue.functions = arr onChange(contextValue) } - function onSourceFunctionSelect (e: Ref): void { + function onSourceFunctionSelect(e: Ref): void { onFunction(e, contextValue.sourceFunction?.props ?? {}, (res) => (contextValue.sourceFunction = res)) } - function onSourceFunctionChange (e: Func): void { + function onSourceFunctionChange(e: Func): void { contextValue.sourceFunction = e onChange(contextValue) } - function onFunction (_func: Ref, props: Record, cb: (res: Func) => void) { + function onFunction(_func: Ref, props: Record, cb: (res: Func) => void) { const func = client.getModel().findAllSync(plugin.class.ProcessFunction, { _id: _func })[0] if (func.editor === undefined) { const res: Func = { func: _func, props: {} } @@ -186,7 +186,7 @@ } } - function onFunctionChange (e: Ref, i: number): void { + function onFunctionChange(e: Ref, i: number): void { onFunction(e, contextValue.functions?.[i]?.props ?? {}, (res) => { if (contextValue.functions === undefined) { contextValue.functions = [] @@ -196,13 +196,13 @@ }) } - function getFunctionSelect (i: number): (e: Ref) => void { + function getFunctionSelect(i: number): (e: Ref) => void { return (e: Ref) => { onFunctionChange(e, i) } } - function getFunctionChange (i: number): (e: Func) => void { + function getFunctionChange(i: number): (e: Func) => void { return (e: Func) => { if (contextValue.functions === undefined) { contextValue.functions = [] @@ -213,7 +213,7 @@ } } - function onFunctionRemove (pos: number): void { + function onFunctionRemove(pos: number): void { const arr = contextValue.functions ?? [] if (pos !== -1) { arr.splice(pos, 1) @@ -222,7 +222,7 @@ onChange(contextValue) } - function onConfigure (e: MouseEvent, func: Func, pos: number): void { + function onConfigure(e: MouseEvent, func: Func, pos: number): void { const f = getFunction(func.func) if (contextValue.functions === undefined || f.editor === undefined) return const val = contextValue.functions[pos] @@ -252,7 +252,7 @@ ) } - function onFallbackChange (): void { + function onFallbackChange(): void { if (contextValue.fallbackValue === undefined) { contextValue.fallbackValue = null } else { @@ -261,7 +261,7 @@ onChange(contextValue) } - function getFunction (_id: Ref): ProcessFunction { + function getFunction(_id: Ref): ProcessFunction { return client.getModel().findAllSync(plugin.class.ProcessFunction, { _id })[0] } diff --git a/plugins/process-resources/src/components/attributeEditors/ConstValuePopup.svelte b/plugins/process-resources/src/components/attributeEditors/ConstValuePopup.svelte index 94807b8ac9..666b5d4ff3 100644 --- a/plugins/process-resources/src/components/attributeEditors/ConstValuePopup.svelte +++ b/plugins/process-resources/src/components/attributeEditors/ConstValuePopup.svelte @@ -25,11 +25,11 @@ const dispatch = createEventDispatcher() - function save (): void { + function save(): void { dispatch('close', value) } - function onChange (val: any): void { + function onChange(val: any): void { value = val } diff --git a/plugins/process-resources/src/components/attributeEditors/ContextSelectorPopup.svelte b/plugins/process-resources/src/components/attributeEditors/ContextSelectorPopup.svelte index 59a81d1075..ae0f25d111 100644 --- a/plugins/process-resources/src/components/attributeEditors/ContextSelectorPopup.svelte +++ b/plugins/process-resources/src/components/attributeEditors/ContextSelectorPopup.svelte @@ -40,12 +40,12 @@ const dispatch = createEventDispatcher() - function onClick (val: SelectedContext): void { + function onClick(val: SelectedContext): void { onSelect(val) dispatch('close') } - function onAttribute (val: AnyAttribute): void { + function onAttribute(val: AnyAttribute): void { const valueFunc = getValueReduceFunc(val, attribute) onClick({ type: 'attribute', @@ -60,7 +60,7 @@ $: relations = Object.entries(context.relations) $: convertible = (context as any).convertible ?? [] - function onUserRequest (): void { + function onUserRequest(): void { onSelect({ type: 'userRequest', id: generateContextId(), @@ -70,7 +70,7 @@ dispatch('close') } - function onFunc (func: Ref): void { + function onFunc(func: Ref): void { onSelect({ type: 'function', key: attribute.name, @@ -80,18 +80,18 @@ dispatch('close') } - function onProcessContext (ctx: ProcessExecutionContext): void { + function onProcessContext(ctx: ProcessExecutionContext): void { onSelect(ctx.value) dispatch('close') } - function getFunc (func: Ref): ProcessFunction { + function getFunc(func: Ref): ProcessFunction { const client = getClient() const f = client.getModel().getObject(func) return f } - function onRelation (val: RelatedContext): void { + function onRelation(val: RelatedContext): void { const client = getClient() const reduceFunc = getRelationObjectReduceFunc(client, val.association, val.direction, attribute) onSelect({ @@ -106,7 +106,7 @@ dispatch('close') } - function onConst (e: MouseEvent): void { + function onConst(e: MouseEvent): void { showPopup(ConstValuePopup, { attribute }, eventToHTMLElement(e), (res) => { if (res != null) { onSelect({ @@ -119,7 +119,7 @@ }) } - function onConvertSelect (val: SelectedContext | null, func: Ref): void { + function onConvertSelect(val: SelectedContext | null, func: Ref): void { if (val !== null) { onClick({ ...val, @@ -144,7 +144,7 @@ } } - function getOnConvertSelect (func: Ref): (val: SelectedContext | null) => void { + function getOnConvertSelect(func: Ref): (val: SelectedContext | null) => void { return (val: SelectedContext | null) => { onConvertSelect(val, func) } diff --git a/plugins/process-resources/src/components/attributeEditors/ContextValue.svelte b/plugins/process-resources/src/components/attributeEditors/ContextValue.svelte index b11788346f..b6e15cf306 100644 --- a/plugins/process-resources/src/components/attributeEditors/ContextValue.svelte +++ b/plugins/process-resources/src/components/attributeEditors/ContextValue.svelte @@ -34,7 +34,7 @@ $: configurable = contextValue.type !== 'userRequest' - function configure (e: MouseEvent): void { + function configure(e: MouseEvent): void { if (!configurable) return const onChange = (res: any): void => { if (res !== undefined) { diff --git a/plugins/process-resources/src/components/attributeEditors/ExecutionContextSelector.svelte b/plugins/process-resources/src/components/attributeEditors/ExecutionContextSelector.svelte index db796900f2..0637eb7652 100644 --- a/plugins/process-resources/src/components/attributeEditors/ExecutionContextSelector.svelte +++ b/plugins/process-resources/src/components/attributeEditors/ExecutionContextSelector.svelte @@ -41,7 +41,7 @@ } } - function onAttribute (attr: AnyAttribute): void { + function onAttribute(attr: AnyAttribute): void { const valueFunc = getValueReduceFunc(attr, target) onSelect({ type: 'context', diff --git a/plugins/process-resources/src/components/attributeEditors/NestedContextSelector.svelte b/plugins/process-resources/src/components/attributeEditors/NestedContextSelector.svelte index 210122aaff..af1117ebcb 100644 --- a/plugins/process-resources/src/components/attributeEditors/NestedContextSelector.svelte +++ b/plugins/process-resources/src/components/attributeEditors/NestedContextSelector.svelte @@ -41,7 +41,7 @@ } } - function onAttribute (attr: AnyAttribute): void { + function onAttribute(attr: AnyAttribute): void { const pathReduce = getValueReduceFunc(context.attribute, target) const valueFunc = getValueReduceFunc(attr, target) onSelect({ diff --git a/plugins/process-resources/src/components/attributeEditors/RelatedContextSelector.svelte b/plugins/process-resources/src/components/attributeEditors/RelatedContextSelector.svelte index 58a0b9d4c3..89d4908824 100644 --- a/plugins/process-resources/src/components/attributeEditors/RelatedContextSelector.svelte +++ b/plugins/process-resources/src/components/attributeEditors/RelatedContextSelector.svelte @@ -44,7 +44,7 @@ } } - function onAttribute (attr: AnyAttribute): void { + function onAttribute(attr: AnyAttribute): void { const reduceFunc = getRelationReduceFunc(client, context.association, context.direction) const valueFunc = getValueReduceFunc(attr, target) onSelect({ diff --git a/plugins/process-resources/src/components/contextEditors/ClassUserInput.svelte b/plugins/process-resources/src/components/contextEditors/ClassUserInput.svelte index 32670ad6c8..d57391d310 100644 --- a/plugins/process-resources/src/components/contextEditors/ClassUserInput.svelte +++ b/plugins/process-resources/src/components/contextEditors/ClassUserInput.svelte @@ -27,7 +27,7 @@ const attribute = hierarchy.findAttribute(_class, '_class') const dispatch = createEventDispatcher() - function onChange (val: any | undefined): void { + function onChange(val: any | undefined): void { value = val dispatch('change', val) } diff --git a/plugins/process-resources/src/components/contextEditors/FallbackEditor.svelte b/plugins/process-resources/src/components/contextEditors/FallbackEditor.svelte index 41b40856ff..427684500b 100644 --- a/plugins/process-resources/src/components/contextEditors/FallbackEditor.svelte +++ b/plugins/process-resources/src/components/contextEditors/FallbackEditor.svelte @@ -27,11 +27,11 @@ const dispatch = createEventDispatcher() const client = getClient() - function save (): void { + function save(): void { dispatch('close', { value }) } - function errorChange (e: CustomEvent): void { + function errorChange(e: CustomEvent): void { if (e.detail) { value = undefined } else { @@ -41,13 +41,13 @@ let editor: AnySvelteComponent | undefined - function getBaseEditor (_class: Ref>, key: string): void { + function getBaseEditor(_class: Ref>, key: string): void { void getAttributeEditor(client, _class, key).then((p) => { editor = p }) } - function onChange (val: any | undefined): void { + function onChange(val: any | undefined): void { value = val } diff --git a/plugins/process-resources/src/components/contextEditors/RequestUserInput.svelte b/plugins/process-resources/src/components/contextEditors/RequestUserInput.svelte index 417e9988f4..1f02fb0a02 100644 --- a/plugins/process-resources/src/components/contextEditors/RequestUserInput.svelte +++ b/plugins/process-resources/src/components/contextEditors/RequestUserInput.svelte @@ -33,13 +33,13 @@ const client = getClient() const model = client.getModel() - function save (): void { + function save(): void { dispatch('close', { value: values }) } $: canSaveValue = inputs.every((input) => values[input.id] != null) - export function canClose (): boolean { + export function canClose(): boolean { return false } diff --git a/plugins/process-resources/src/components/contextEditors/RequestUserInputAttribute.svelte b/plugins/process-resources/src/components/contextEditors/RequestUserInputAttribute.svelte index 839f37a85f..d092e3ca70 100644 --- a/plugins/process-resources/src/components/contextEditors/RequestUserInputAttribute.svelte +++ b/plugins/process-resources/src/components/contextEditors/RequestUserInputAttribute.svelte @@ -28,7 +28,7 @@ const hierarchy = client.getHierarchy() const attribute = hierarchy.findAttribute(_class, key) ?? (key === '' ? mockAttribute(_class) : undefined) - function mockAttribute (_class: Ref>): AnyAttribute { + function mockAttribute(_class: Ref>): AnyAttribute { const type: RefTo = { label: core.string.Ref, _class: core.class.RefTo, @@ -49,7 +49,7 @@ let editor: AnyComponent | undefined - function getEditor (_class: Ref>, key: string): void { + function getEditor(_class: Ref>, key: string): void { if (key === '' || key === '_id') { const mixin = hierarchy.classHierarchyMixin(_class, view.mixin.AttributeEditor) if (mixin?.inlineEditor !== undefined) { @@ -61,7 +61,7 @@ } const dispatch = createEventDispatcher() - function onChange (val: any | undefined): void { + function onChange(val: any | undefined): void { value = val dispatch('change', val) } diff --git a/plugins/process-resources/src/components/contextEditors/ResultInput.svelte b/plugins/process-resources/src/components/contextEditors/ResultInput.svelte index 83e281e7d6..2f4f1b9115 100644 --- a/plugins/process-resources/src/components/contextEditors/ResultInput.svelte +++ b/plugins/process-resources/src/components/contextEditors/ResultInput.svelte @@ -30,14 +30,14 @@ let values: Record = {} - function fillValues (): void { + function fillValues(): void { results.forEach((r) => { values[r._id] = getVal(r) }) values = values } - function getVal (res: UserResult): any { + function getVal(res: UserResult): any { if (res.key !== undefined) { return getObjectValue(res.key, doc) ?? context[res._id] } @@ -46,15 +46,15 @@ fillValues() - export function canClose (): boolean { + export function canClose(): boolean { return false } - function save (): void { + function save(): void { dispatch('close', values) } - function getOnChange (id: ContextId): (val: any) => void { + function getOnChange(id: ContextId): (val: any) => void { return (val: any) => { values[id] = val values = values diff --git a/plugins/process-resources/src/components/contextEditors/RoleEditor.svelte b/plugins/process-resources/src/components/contextEditors/RoleEditor.svelte index b59d037bb9..7364055b57 100644 --- a/plugins/process-resources/src/components/contextEditors/RoleEditor.svelte +++ b/plugins/process-resources/src/components/contextEditors/RoleEditor.svelte @@ -45,7 +45,7 @@ } } - function onValue (role: Ref): void { + function onValue(role: Ref): void { const pathReduce = getContextFunctionReduce(context, target) onSelect({ type: 'function', diff --git a/plugins/process-resources/src/components/contextEditors/ToDoContextSelector.svelte b/plugins/process-resources/src/components/contextEditors/ToDoContextSelector.svelte index 94dfd5d8be..fcf89873a6 100644 --- a/plugins/process-resources/src/components/contextEditors/ToDoContextSelector.svelte +++ b/plugins/process-resources/src/components/contextEditors/ToDoContextSelector.svelte @@ -56,20 +56,20 @@ const client = getClient() - function getContext (value: string): SelectedExecutionContext | undefined { + function getContext(value: string): SelectedExecutionContext | undefined { const context = parseContext(value) if (context !== undefined && isExecutionContext(context)) { return context } } - function isExecutionContext (context: SelectedContext): context is SelectedExecutionContext { + function isExecutionContext(context: SelectedContext): context is SelectedExecutionContext { return context.type === 'context' } const dispatch = createEventDispatcher() - async function getPossibleContext (): Promise { + async function getPossibleContext(): Promise { // todo filter to only possible todos, for now allow all... const res: SelectPopupValueType[] = [] for (const key in process.context) { @@ -106,7 +106,7 @@ return res } - async function click (ev: MouseEvent): Promise { + async function click(ev: MouseEvent): Promise { if (readonly) { return } diff --git a/plugins/process-resources/src/components/criterias/ArraySizeCriteria.svelte b/plugins/process-resources/src/components/criterias/ArraySizeCriteria.svelte index c85a464247..5bfbdefdd2 100644 --- a/plugins/process-resources/src/components/criterias/ArraySizeCriteria.svelte +++ b/plugins/process-resources/src/components/criterias/ArraySizeCriteria.svelte @@ -36,7 +36,7 @@ $: contextValue = parseContext(val) - function selectContext (e: MouseEvent): void { + function selectContext(e: MouseEvent): void { showPopup( ContextSelectorPopup, { @@ -50,12 +50,12 @@ ) } - function onSelect (res: SelectedContext | null): void { + function onSelect(res: SelectedContext | null): void { val = res === null ? undefined : createContext(res) dispatch('change', val) } - function onChange (value: any | undefined): void { + function onChange(value: any | undefined): void { val = value dispatch('change', val) } diff --git a/plugins/process-resources/src/components/criterias/AttributeCriteria.svelte b/plugins/process-resources/src/components/criterias/AttributeCriteria.svelte index b80768cd17..2f8a3aab6f 100644 --- a/plugins/process-resources/src/components/criterias/AttributeCriteria.svelte +++ b/plugins/process-resources/src/components/criterias/AttributeCriteria.svelte @@ -39,7 +39,7 @@ $: value = params[key] - function onChange (e: CustomEvent): void { + function onChange(e: CustomEvent): void { if (e.detail !== undefined) { dispatch('change', { value: e.detail }) } diff --git a/plugins/process-resources/src/components/criterias/BaseCriteria.svelte b/plugins/process-resources/src/components/criterias/BaseCriteria.svelte index 195fd3828c..13aee94660 100644 --- a/plugins/process-resources/src/components/criterias/BaseCriteria.svelte +++ b/plugins/process-resources/src/components/criterias/BaseCriteria.svelte @@ -37,13 +37,13 @@ $: [val, selectedMode] = parseValue(modesValues, value) - function changeResult (value: any): void { + function changeResult(value: any): void { const result = buildResult(selectedMode, value) value = result dispatch('change', result) } - function changeMode (e: CustomEvent): void { + function changeMode(e: CustomEvent): void { const editorChanged = e.detail if (editorChanged) { val = undefined diff --git a/plugins/process-resources/src/components/criterias/BaseCriteriaEditor.svelte b/plugins/process-resources/src/components/criterias/BaseCriteriaEditor.svelte index 635782812d..9109c69610 100644 --- a/plugins/process-resources/src/components/criterias/BaseCriteriaEditor.svelte +++ b/plugins/process-resources/src/components/criterias/BaseCriteriaEditor.svelte @@ -32,7 +32,7 @@ $: contextValue = parseContext(val) - function selectContext (e: MouseEvent): void { + function selectContext(e: MouseEvent): void { showPopup( ContextSelectorPopup, { @@ -46,12 +46,12 @@ ) } - function onSelect (res: SelectedContext | null): void { + function onSelect(res: SelectedContext | null): void { val = res === null ? undefined : createContext(res) dispatch('change', val) } - function onChange (value: any | undefined): void { + function onChange(value: any | undefined): void { val = value dispatch('change', val) } diff --git a/plugins/process-resources/src/components/criterias/ContextCriteria.svelte b/plugins/process-resources/src/components/criterias/ContextCriteria.svelte index 6c783522cb..ce0ac148b5 100644 --- a/plugins/process-resources/src/components/criterias/ContextCriteria.svelte +++ b/plugins/process-resources/src/components/criterias/ContextCriteria.svelte @@ -44,7 +44,7 @@ $: fill(contextId) - function fill (contextId: string): void { + function fill(contextId: string): void { const _ctx = process.context[contextId as ContextId] if (_ctx === undefined) { editor = undefined @@ -69,7 +69,7 @@ context = getContext(client, process, presenterClass?.attrClass, presenterClass?.category) } - function onChange (e: CustomEvent): void { + function onChange(e: CustomEvent): void { if (e.detail !== undefined) { dispatch('change', e.detail) } diff --git a/plugins/process-resources/src/components/criterias/CriteriasEditor.svelte b/plugins/process-resources/src/components/criterias/CriteriasEditor.svelte index f98445d80e..e5e4e6d462 100644 --- a/plugins/process-resources/src/components/criterias/CriteriasEditor.svelte +++ b/plugins/process-resources/src/components/criterias/CriteriasEditor.svelte @@ -27,7 +27,7 @@ const dispatch = createEventDispatcher() - function change (e: CustomEvent, key: string): void { + function change(e: CustomEvent, key: string): void { if (e.detail?.value != null && e.detail.value !== '') { ;(params as any)[key] = e.detail.value } else if (Object.hasOwn(params, key)) { diff --git a/plugins/process-resources/src/components/criterias/RangeCriteria.svelte b/plugins/process-resources/src/components/criterias/RangeCriteria.svelte index 49bff10f70..58a3c62912 100644 --- a/plugins/process-resources/src/components/criterias/RangeCriteria.svelte +++ b/plugins/process-resources/src/components/criterias/RangeCriteria.svelte @@ -35,7 +35,7 @@ $: firstContextValue = parseContext(val?.[0]) $: secondContextValue = parseContext(val?.[1]) - function selectContext (e: MouseEvent, index: number): void { + function selectContext(e: MouseEvent, index: number): void { showPopup( ContextSelectorPopup, { @@ -51,28 +51,28 @@ ) } - function onSelect (res: SelectedContext | null, index: number): void { + function onSelect(res: SelectedContext | null, index: number): void { val[index] = res === null ? undefined : createContext(res) dispatch('change', val) } - function onChange (value: any | undefined, index: number): void { + function onChange(value: any | undefined, index: number): void { val[index] = value dispatch('change', val) } - function setDefaults (value: any) { + function setDefaults(value: any) { if (!value || !Array.isArray(value)) { val = [undefined, undefined] } } $: setDefaults(val) - function changeFirst (value: any | undefined): void { + function changeFirst(value: any | undefined): void { onChange(value, 0) } - function changeSecond (value: any | undefined): void { + function changeSecond(value: any | undefined): void { onChange(value, 1) } diff --git a/plugins/process-resources/src/components/criterias/SubProcessStateCriteria.svelte b/plugins/process-resources/src/components/criterias/SubProcessStateCriteria.svelte index 3c45fcc1b1..ba709a2983 100644 --- a/plugins/process-resources/src/components/criterias/SubProcessStateCriteria.svelte +++ b/plugins/process-resources/src/components/criterias/SubProcessStateCriteria.svelte @@ -35,12 +35,12 @@ let [val, selectedMode] = parseValue(modes, value) $: [val, selectedMode] = parseValue(modes, value) - function changeMode (): void { + function changeMode(): void { value = buildResult(selectedMode, val) dispatch('change', value) } - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { val = e.detail ?? [] value = buildResult(selectedMode, val) dispatch('change', value) diff --git a/plugins/process-resources/src/components/presenters/UpdateAttributePresenter.svelte b/plugins/process-resources/src/components/presenters/UpdateAttributePresenter.svelte index cc65335f51..ffd51b1b62 100644 --- a/plugins/process-resources/src/components/presenters/UpdateAttributePresenter.svelte +++ b/plugins/process-resources/src/components/presenters/UpdateAttributePresenter.svelte @@ -34,11 +34,11 @@ $: [val, selectedMode] = parseValue(Object.values(Modes), value) $: presenterClass = attribute !== undefined ? getAttributePresenterClass(hierarchy, attribute.type) : undefined - function isArraySize (category: AttributeCategory | undefined, selectedMode: Mode): boolean { + function isArraySize(category: AttributeCategory | undefined, selectedMode: Mode): boolean { return category === 'array' && selectedMode.id.startsWith('size') } - function getPresenter (key: string): AnyComponent | undefined { + function getPresenter(key: string): AnyComponent | undefined { const isArraySizeCriteria = isArraySize(presenterClass?.category, selectedMode) if (isArraySizeCriteria) { return view.component.NumberPresenter diff --git a/plugins/process-resources/src/components/settings/ActionPresenter.svelte b/plugins/process-resources/src/components/settings/ActionPresenter.svelte index 3cce35caea..14837f4f92 100644 --- a/plugins/process-resources/src/components/settings/ActionPresenter.svelte +++ b/plugins/process-resources/src/components/settings/ActionPresenter.svelte @@ -32,7 +32,7 @@ $: void validate(action.params) - async function validate (params: MethodParams): Promise { + async function validate(params: MethodParams): Promise { try { const res: string[] = [] for (const key of method.requiredParams) { diff --git a/plugins/process-resources/src/components/settings/AddRelationEditor.svelte b/plugins/process-resources/src/components/settings/AddRelationEditor.svelte index 1a74f8cbc3..ca57472a01 100644 --- a/plugins/process-resources/src/components/settings/AddRelationEditor.svelte +++ b/plugins/process-resources/src/components/settings/AddRelationEditor.svelte @@ -37,7 +37,7 @@ $: assoc = association && client.getModel().findObject(association) $: targetClass = assoc && direction ? (direction === 'A' ? assoc.classA : assoc.classB) : undefined - function changeAssociation (e: CustomEvent): void { + function changeAssociation(e: CustomEvent): void { if (e.detail !== undefined) { association = e.detail.association direction = e.detail.direction @@ -48,7 +48,7 @@ } } - function changeParam (e: CustomEvent): void { + function changeParam(e: CustomEvent): void { if (e.detail !== undefined) { params._id = e.detail ;(step.params as any)._id = e.detail diff --git a/plugins/process-resources/src/components/settings/AddTagEditor.svelte b/plugins/process-resources/src/components/settings/AddTagEditor.svelte index e2186b983b..d6cd418840 100644 --- a/plugins/process-resources/src/components/settings/AddTagEditor.svelte +++ b/plugins/process-resources/src/components/settings/AddTagEditor.svelte @@ -36,7 +36,7 @@ let keys = Object.keys(props || {}) - function changeTag (e: CustomEvent<{ tag: Ref }>): void { + function changeTag(e: CustomEvent<{ tag: Ref }>): void { if (e.detail !== undefined) { _id = e.detail.tag keys = [] @@ -61,7 +61,7 @@ } } - function removeParam (e: CustomEvent<{ key: string }>): void { + function removeParam(e: CustomEvent<{ key: string }>): void { if (e.detail !== undefined) { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete props[e.detail.key] @@ -75,7 +75,7 @@ $: allAttrs = _id !== undefined ? Array.from(client.getHierarchy().getOwnAttributes(_id).values()) : [] $: possibleAttrs = allAttrs.filter((attr) => !keys.includes(attr.name)) - function onAdd (e: MouseEvent): void { + function onAdd(e: MouseEvent): void { showPopup( SelectPopup, { @@ -92,11 +92,11 @@ ) } - function addKey (key: string): void { + function addKey(key: string): void { keys = [...keys, key] } - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (e.detail == null) return props = e.detail params.props = props @@ -107,7 +107,7 @@ let askRequired = params.askRequired ?? false $: askRequired = params.askRequired ?? false - function changeAskRequired (e: CustomEvent): void { + function changeAskRequired(e: CustomEvent): void { if (e.detail !== undefined) { params.askRequired = e.detail if (e.detail) { diff --git a/plugins/process-resources/src/components/settings/AddTransitionButton.svelte b/plugins/process-resources/src/components/settings/AddTransitionButton.svelte index 4f5fa56e03..3037e9904d 100644 --- a/plugins/process-resources/src/components/settings/AddTransitionButton.svelte +++ b/plugins/process-resources/src/components/settings/AddTransitionButton.svelte @@ -21,7 +21,7 @@ export let state: State export let direction: 'from' | 'to' - function add (): void { + function add(): void { showPopup(AddTransitionPopup, { state, direction }, 'top') } diff --git a/plugins/process-resources/src/components/settings/AddTransitionPopup.svelte b/plugins/process-resources/src/components/settings/AddTransitionPopup.svelte index 8cdc31e229..0029e62fa4 100644 --- a/plugins/process-resources/src/components/settings/AddTransitionPopup.svelte +++ b/plugins/process-resources/src/components/settings/AddTransitionPopup.svelte @@ -79,7 +79,7 @@ const triggersItems: DropdownIntlItem[] = triggers.map((p) => ({ label: p.label, id: p._id, icon: p.icon })) - async function save (): Promise { + async function save(): Promise { if (to === undefined || trigger === undefined) { return } @@ -100,7 +100,7 @@ dispatch('close') } - function change (e: CustomEvent>): void { + function change(e: CustomEvent>): void { if (e.detail?.params !== undefined) { params = e.detail.params } diff --git a/plugins/process-resources/src/components/settings/ApproveRequestEditor.svelte b/plugins/process-resources/src/components/settings/ApproveRequestEditor.svelte index 3f5b3d9dbd..b7ff8aefdb 100644 --- a/plugins/process-resources/src/components/settings/ApproveRequestEditor.svelte +++ b/plugins/process-resources/src/components/settings/ApproveRequestEditor.svelte @@ -33,7 +33,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function changeParams (e: CustomEvent): void { + function changeParams(e: CustomEvent): void { if (e.detail !== undefined) { params = e.detail ;(step.params as any) = params @@ -60,7 +60,7 @@ const presenterClass = getAttributePresenterClass(hierarchy, attribute.type) $: context = getContext(client, process, presenterClass.attrClass, presenterClass.category, undefined, true) - function onChange (e: CustomEvent): void { + function onChange(e: CustomEvent): void { params.user = e.detail ;(step.params as any) = params dispatch('change', step) @@ -68,7 +68,7 @@ let editor: AnySvelteComponent | undefined - function getBaseEditor (attribute: AnyAttribute): void { + function getBaseEditor(attribute: AnyAttribute): void { void getAttributeEditor(client, plugin.class.ApproveRequest, { attr: attribute, key: 'user' @@ -88,7 +88,7 @@ dispatch('change', step) } - function toggleField (e: CustomEvent): void { + function toggleField(e: CustomEvent): void { if (e.detail) { if (contextValue?.type === 'attribute') { params.field = contextValue.key @@ -100,7 +100,7 @@ dispatch('change', step) } - function toggleActionType (e: CustomEvent): void { + function toggleActionType(e: CustomEvent): void { params.actionType = e.detail ? 'review' : 'approve' step.params = params dispatch('change', step) diff --git a/plugins/process-resources/src/components/settings/ApproveRequestTriggerEditor.svelte b/plugins/process-resources/src/components/settings/ApproveRequestTriggerEditor.svelte index c2fa090c3c..b23870f67f 100644 --- a/plugins/process-resources/src/components/settings/ApproveRequestTriggerEditor.svelte +++ b/plugins/process-resources/src/components/settings/ApproveRequestTriggerEditor.svelte @@ -26,7 +26,7 @@ const dispatch = createEventDispatcher() - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (readonly || e.detail == null) return params._id = e.detail dispatch('change', { params }) diff --git a/plugins/process-resources/src/components/settings/ApproveRequestTriggerPresenter.svelte b/plugins/process-resources/src/components/settings/ApproveRequestTriggerPresenter.svelte index 548bda7977..642c39273f 100644 --- a/plugins/process-resources/src/components/settings/ApproveRequestTriggerPresenter.svelte +++ b/plugins/process-resources/src/components/settings/ApproveRequestTriggerPresenter.svelte @@ -23,7 +23,7 @@ $: context = getContext(params._id) - function getContext (value: string | undefined): SelectedExecutionContext | undefined { + function getContext(value: string | undefined): SelectedExecutionContext | undefined { if (value === undefined) return const context = parseContext(value) if (context !== undefined && isExecutionContext(context)) { @@ -31,7 +31,7 @@ } } - function isExecutionContext (context: SelectedContext): context is SelectedExecutionContext { + function isExecutionContext(context: SelectedContext): context is SelectedExecutionContext { return context.type === 'context' } diff --git a/plugins/process-resources/src/components/settings/AsideStepEditor.svelte b/plugins/process-resources/src/components/settings/AsideStepEditor.svelte index ef8770cf11..cd05e205f3 100644 --- a/plugins/process-resources/src/components/settings/AsideStepEditor.svelte +++ b/plugins/process-resources/src/components/settings/AsideStepEditor.svelte @@ -32,7 +32,7 @@ $: method = getMethod(step.methodId) - function getMethod (_id: Ref>): Method { + function getMethod(_id: Ref>): Method { if (method?._id !== _id) { const res = client.getModel().findAllSync(plugin.class.Method, { _id })[0] return res @@ -40,7 +40,7 @@ return method } - async function save (): Promise { + async function save(): Promise { const doc = client.getModel().findObject(_id) if (doc === undefined) return const index = doc.actions.findIndex((it) => it._id === step._id) @@ -50,7 +50,7 @@ clearSettingsStore() } - async function remove (): Promise { + async function remove(): Promise { const doc = client.getModel().findObject(_id) if (doc === undefined) return const index = doc.actions.findIndex((it) => it._id === step._id) @@ -60,7 +60,7 @@ clearSettingsStore() } - function change (e: CustomEvent>): void { + function change(e: CustomEvent>): void { step = e.detail } diff --git a/plugins/process-resources/src/components/settings/AsideTransitionEditor.svelte b/plugins/process-resources/src/components/settings/AsideTransitionEditor.svelte index f276f41476..b5c7b44de6 100644 --- a/plugins/process-resources/src/components/settings/AsideTransitionEditor.svelte +++ b/plugins/process-resources/src/components/settings/AsideTransitionEditor.svelte @@ -33,17 +33,17 @@ states = res }) - async function save (): Promise { + async function save(): Promise { await client.update(transition, { triggerParams: params, trigger: selectedTrigger }) clearSettingsStore() } - async function remove (): Promise { + async function remove(): Promise { await client.remove(transition) clearSettingsStore() } - function change (e: CustomEvent>): void { + function change(e: CustomEvent>): void { if (e.detail?.params !== undefined) { params = e.detail.params } @@ -69,13 +69,13 @@ process && client.getModel().findAllSync(plugin.class.Transition, { from: null, process: process._id })[0] === undefined - async function updateFrom (e: CustomEvent): Promise { + async function updateFrom(e: CustomEvent): Promise { if (transition === undefined) return const from = (e.detail?._id as Ref) ?? null await client.update(transition, { from }) } - async function updateTo (e: CustomEvent): Promise { + async function updateTo(e: CustomEvent): Promise { if (transition === undefined) return const to = e.detail?._id as Ref if (to === undefined) return diff --git a/plugins/process-resources/src/components/settings/AssociationSelector.svelte b/plugins/process-resources/src/components/settings/AssociationSelector.svelte index 841fe97930..95010e37bf 100644 --- a/plugins/process-resources/src/components/settings/AssociationSelector.svelte +++ b/plugins/process-resources/src/components/settings/AssociationSelector.svelte @@ -28,7 +28,7 @@ const dispatch = createEventDispatcher() - function open (e: MouseEvent): void { + function open(e: MouseEvent): void { const anc = hierarchy.getAncestors(process.masterTag) const leftAssociations = client.getModel().findAllSync(core.class.Association, { classA: { $in: anc } }) const rightAssociations = client.getModel().findAllSync(core.class.Association, { classB: { $in: anc } }) diff --git a/plugins/process-resources/src/components/settings/BindingsEditor.svelte b/plugins/process-resources/src/components/settings/BindingsEditor.svelte index 8400eca08c..dc8ad44a62 100644 --- a/plugins/process-resources/src/components/settings/BindingsEditor.svelte +++ b/plugins/process-resources/src/components/settings/BindingsEditor.svelte @@ -34,12 +34,12 @@ $: allAssociations = model.findAllSync(core.class.Association, {}) $: allProcesses = model.findAllSync(processPlugin.class.Process, {}) - function isClassLike (obj: Doc | undefined): boolean { + function isClassLike(obj: Doc | undefined): boolean { if (!obj || !obj._class) return false return hierarchy.isDerived(obj._class, core.class.Class) } - function resolveMemberOf (memberOf: string | undefined): Ref> | undefined { + function resolveMemberOf(memberOf: string | undefined): Ref> | undefined { if (memberOf === undefined) return process.masterTag as any let targetId: string | undefined if (memberOf.startsWith('__SLOT_')) { @@ -57,7 +57,7 @@ return undefined } - async function setBinding (slotId: string, e: MouseEvent): Promise { + async function setBinding(slotId: string, e: MouseEvent): Promise { const slot = process.requiredSlots?.[slotId] if (slot === undefined) return @@ -125,7 +125,7 @@ ) } - function getBindingLabel ( + function getBindingLabel( allAttrs: Map, bindings: Record | undefined, id: string diff --git a/plugins/process-resources/src/components/settings/CancelSubProcessEditor.svelte b/plugins/process-resources/src/components/settings/CancelSubProcessEditor.svelte index efcfab8641..327417f1c8 100644 --- a/plugins/process-resources/src/components/settings/CancelSubProcessEditor.svelte +++ b/plugins/process-resources/src/components/settings/CancelSubProcessEditor.svelte @@ -32,7 +32,7 @@ const params = step.params let _id = params._id as Ref - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (e.detail !== undefined) { _id = e.detail params._id = _id diff --git a/plugins/process-resources/src/components/settings/CancelToDoEditor.svelte b/plugins/process-resources/src/components/settings/CancelToDoEditor.svelte index afb5ff73bc..a263644857 100644 --- a/plugins/process-resources/src/components/settings/CancelToDoEditor.svelte +++ b/plugins/process-resources/src/components/settings/CancelToDoEditor.svelte @@ -29,7 +29,7 @@ const params = step.params let _id = params._id as Ref - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (e.detail !== undefined) { _id = e.detail params._id = _id diff --git a/plugins/process-resources/src/components/settings/CardUpdateEditor.svelte b/plugins/process-resources/src/components/settings/CardUpdateEditor.svelte index c8f314a3b7..97808c0de1 100644 --- a/plugins/process-resources/src/components/settings/CardUpdateEditor.svelte +++ b/plugins/process-resources/src/components/settings/CardUpdateEditor.svelte @@ -32,13 +32,13 @@ const client = getClient() const hierarchy = client.getHierarchy() - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (readonly || e.detail == null) return params = e.detail dispatch('change', { params }) } - function getKeys (_class: Ref>): AnyAttribute[] { + function getKeys(_class: Ref>): AnyAttribute[] { const ignoreKeys = ['_class', 'content', 'parent', 'attachments', 'todos'] const attributes = hierarchy.getAllAttributes(_class, core.class.Doc) const res: AnyAttribute[] = [] @@ -61,7 +61,7 @@ const allAttrs = getKeys(process.masterTag) $: possibleAttrs = allAttrs.filter((attr) => !keys.includes(attr.name)) - function onAdd (e: MouseEvent): void { + function onAdd(e: MouseEvent): void { showPopup( SelectPopup, { @@ -78,11 +78,11 @@ ) } - function addKey (key: string): void { + function addKey(key: string): void { keys = [...keys, key] } - function remove (e: CustomEvent): void { + function remove(e: CustomEvent): void { if (e.detail !== undefined) { const key = e.detail.key keys = keys.filter((k) => k !== key) diff --git a/plugins/process-resources/src/components/settings/ContextEditor.svelte b/plugins/process-resources/src/components/settings/ContextEditor.svelte index 51b7764086..8691c5de96 100644 --- a/plugins/process-resources/src/components/settings/ContextEditor.svelte +++ b/plugins/process-resources/src/components/settings/ContextEditor.svelte @@ -28,18 +28,18 @@ const client = getClient() - async function save (): Promise { + async function save(): Promise { await client.update(process, { context: process.context }) clearSettingsStore() } - function onNameChange (ev: Event, _id: string, ctx: ProcessContext): void { + function onNameChange(ev: Event, _id: string, ctx: ProcessContext): void { const value = (ev.target as HTMLInputElement).value?.trim() ctx.name = value process.context[_id as ContextId] = ctx } - async function open (val: ProcessContext): Promise { + async function open(val: ProcessContext): Promise { const transition = await client.findOne(plugin.class.Transition, { _id: val.producer }) if (transition === undefined) return const step = transition.actions.find((it) => it._id === val.action) diff --git a/plugins/process-resources/src/components/settings/ContextFooter.svelte b/plugins/process-resources/src/components/settings/ContextFooter.svelte index 82157bde90..7df7f573bb 100644 --- a/plugins/process-resources/src/components/settings/ContextFooter.svelte +++ b/plugins/process-resources/src/components/settings/ContextFooter.svelte @@ -30,13 +30,13 @@ $: resultContext = step.results != null ? step.results.map((r) => { - const exists = process.context[r._id] - if (exists != null) return exists - return { - name: r.name, - _class: r.type._class - } - }) + const exists = process.context[r._id] + if (exists != null) return exists + return { + name: r.name, + _class: r.type._class + } + }) : [] diff --git a/plugins/process-resources/src/components/settings/CreateCardEditor.svelte b/plugins/process-resources/src/components/settings/CreateCardEditor.svelte index c60d9bd886..52181b4b52 100644 --- a/plugins/process-resources/src/components/settings/CreateCardEditor.svelte +++ b/plugins/process-resources/src/components/settings/CreateCardEditor.svelte @@ -46,7 +46,7 @@ setName(res) }) - function setName (name: string): void { + function setName(name: string): void { if (params.title === undefined || params.title === '') { params.title = name ;(step.params as any) = params @@ -54,7 +54,7 @@ } } - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (e.detail !== undefined) { params = e.detail ;(step.params as any) = e.detail @@ -62,7 +62,7 @@ } } - function getKeys (_class: Ref>): AnyAttribute[] { + function getKeys(_class: Ref>): AnyAttribute[] { const ignoreKeys = ['_class', 'targetClass', 'parent', 'attachments', 'todos'] const attributes = h.getAllAttributes(_class, core.class.Doc) const res: AnyAttribute[] = [] @@ -81,11 +81,11 @@ $: allAttrs = getKeys(targetClass) $: possibleAttrs = allAttrs.filter((attr) => !keys.includes(attr.name)) - function addKey (key: string): void { + function addKey(key: string): void { keys = [...keys, key] } - function onAdd (e: MouseEvent): void { + function onAdd(e: MouseEvent): void { showPopup( SelectPopup, { @@ -102,7 +102,7 @@ ) } - function remove (e: CustomEvent): void { + function remove(e: CustomEvent): void { if (e.detail !== undefined) { const key = e.detail.key if (key === 'title') return @@ -114,7 +114,7 @@ } } - function typeChange (_id: Ref>): void { + function typeChange(_id: Ref>): void { if (_id === undefined) return const attrKeys = ['_class', 'targetClass', 'askRequired', 'requiredFields', ...getKeys(_id).map((p) => p.name)] const oldParams = { ...params } @@ -160,7 +160,7 @@ setAskSubclass() } - function setAskSubclass (): void { + function setAskSubclass(): void { const context = createContext({ type: 'userRequest', id: generateContextId(), @@ -172,7 +172,7 @@ dispatch('change', step) } - function changeAskSubclass (e: CustomEvent): void { + function changeAskSubclass(e: CustomEvent): void { if (e.detail !== undefined) { if (!e.detail && baseTargetType) return if (e.detail) { @@ -185,7 +185,7 @@ } } - function isBaseTypeWithSubtypes (_class: Ref>): boolean { + function isBaseTypeWithSubtypes(_class: Ref>): boolean { const clazz = h.getClass(_class) as MasterTag | undefined if (clazz?.baseType !== true) return false @@ -199,7 +199,7 @@ let askRequired = params.askRequired ?? false $: askRequired = params.askRequired ?? false - function changeAskRequired (e: CustomEvent): void { + function changeAskRequired(e: CustomEvent): void { if (e.detail !== undefined) { params.askRequired = e.detail if (e.detail) { diff --git a/plugins/process-resources/src/components/settings/FieldChangesEditor.svelte b/plugins/process-resources/src/components/settings/FieldChangesEditor.svelte index 76b5331f01..a2dca484b9 100644 --- a/plugins/process-resources/src/components/settings/FieldChangesEditor.svelte +++ b/plugins/process-resources/src/components/settings/FieldChangesEditor.svelte @@ -33,13 +33,13 @@ const client = getClient() const hierarchy = client.getHierarchy() - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (readonly || e.detail == null) return params = e.detail dispatch('change', { params }) } - function getKeys (_class: Ref>): AnyAttribute[] { + function getKeys(_class: Ref>): AnyAttribute[] { const ignoreKeys = ['_class', 'content', 'parent', 'attachments', 'todos'] const attributes = hierarchy.getAllAttributes(_class, core.class.Doc) const res: AnyAttribute[] = [] @@ -59,7 +59,7 @@ const allAttrs = getKeys(process.masterTag) - function onSelect (e: MouseEvent): void { + function onSelect(e: MouseEvent): void { const possibleAttrs = allAttrs.filter((attr) => key !== attr.name) showPopup( SelectPopup, @@ -77,7 +77,7 @@ ) } - function remove (e: CustomEvent): void { + function remove(e: CustomEvent): void { if (e.detail !== undefined) { if (key !== undefined) { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete diff --git a/plugins/process-resources/src/components/settings/FunctionSubmenu.svelte b/plugins/process-resources/src/components/settings/FunctionSubmenu.svelte index 94df7c97ee..2ea0a572d6 100644 --- a/plugins/process-resources/src/components/settings/FunctionSubmenu.svelte +++ b/plugins/process-resources/src/components/settings/FunctionSubmenu.svelte @@ -27,11 +27,11 @@ const client = getClient() - function getFunction (_id: Ref): ProcessFunction { + function getFunction(_id: Ref): ProcessFunction { return client.getModel().findAllSync(plugin.class.ProcessFunction, { _id })[0] } - function onConfigure (e: MouseEvent): void { + function onConfigure(e: MouseEvent): void { const f = getFunction(func.func) if (f.editor === undefined) return showPopup( diff --git a/plugins/process-resources/src/components/settings/ImportSlotsPopup.svelte b/plugins/process-resources/src/components/settings/ImportSlotsPopup.svelte index 38cb3c4865..e89f8407c2 100644 --- a/plugins/process-resources/src/components/settings/ImportSlotsPopup.svelte +++ b/plugins/process-resources/src/components/settings/ImportSlotsPopup.svelte @@ -37,12 +37,12 @@ $: allAssociations = model.findAllSync(core.class.Association, {}) $: allProcesses = model.findAllSync(processPlugin.class.Process, {}) - function isClassLike (obj: Doc | undefined): boolean { + function isClassLike(obj: Doc | undefined): boolean { if (!obj || !obj._class) return false return obj._class === core.class.Class || hierarchy.isDerived(obj._class, core.class.Class) } - function resolveMemberOf ( + function resolveMemberOf( memberOf: string | undefined, currentBindings: Record ): Ref> | undefined { @@ -76,7 +76,7 @@ return result })() - function setBinding (slotId: string, e: MouseEvent): void { + function setBinding(slotId: string, e: MouseEvent): void { const slot = requiredSlots[slotId] as any const memberOfTag = resolvedSlots[slotId]?.resolved if (!memberOfTag) return @@ -168,13 +168,13 @@ ) } - function onSave (): void { + function onSave(): void { dispatch('close', bindings) } $: allBound = Object.keys(requiredSlots).every((id) => bindings[id] !== undefined) - function getBindingLabel (currentBindings: Record, id: string): any { + function getBindingLabel(currentBindings: Record, id: string): any { const value = currentBindings[id] if (value === undefined) return presentation.string.NotSelected diff --git a/plugins/process-resources/src/components/settings/InitParamsEditor.svelte b/plugins/process-resources/src/components/settings/InitParamsEditor.svelte index a9d04b4405..274303ffc5 100644 --- a/plugins/process-resources/src/components/settings/InitParamsEditor.svelte +++ b/plugins/process-resources/src/components/settings/InitParamsEditor.svelte @@ -34,7 +34,7 @@ let contexts: SelectedUserRequest[] = [] - function fillParams (initTransition: Transition | undefined): void { + function fillParams(initTransition: Transition | undefined): void { contexts = [] for (const action of initTransition?.actions ?? []) { for (const key in action.params) { diff --git a/plugins/process-resources/src/components/settings/LockFieldEditor.svelte b/plugins/process-resources/src/components/settings/LockFieldEditor.svelte index af6d05ffc2..1a32224e30 100644 --- a/plugins/process-resources/src/components/settings/LockFieldEditor.svelte +++ b/plugins/process-resources/src/components/settings/LockFieldEditor.svelte @@ -31,7 +31,7 @@ const dispatch = createEventDispatcher() - function getKeys (_class: Ref>): AnyAttribute[] { + function getKeys(_class: Ref>): AnyAttribute[] { const ignoreKeys = ['_class', 'content', 'parent', 'attachments', 'todos'] const attributes = hierarchy.getAllAttributes(_class, core.class.Doc) const res: AnyAttribute[] = [] @@ -43,7 +43,7 @@ return res } - function change (value: string[]): void { + function change(value: string[]): void { params.value = value step.params = params dispatch('change', step) @@ -54,12 +54,12 @@ $: allAttrs = getKeys(process.masterTag) $: possibleAttrs = allAttrs.filter((attr) => !keys.includes(attr.name)) - function addKey (key: string): void { + function addKey(key: string): void { keys = [...keys, key] change(keys) } - function onAdd (e: MouseEvent): void { + function onAdd(e: MouseEvent): void { showPopup( SelectPopup, { @@ -76,7 +76,7 @@ ) } - function remove (key: string): void { + function remove(key: string): void { keys = keys.filter((k) => k !== key) change(keys) } diff --git a/plugins/process-resources/src/components/settings/LockSectionEditor.svelte b/plugins/process-resources/src/components/settings/LockSectionEditor.svelte index 153079e17a..8854ed8dff 100644 --- a/plugins/process-resources/src/components/settings/LockSectionEditor.svelte +++ b/plugins/process-resources/src/components/settings/LockSectionEditor.svelte @@ -28,7 +28,7 @@ const dispatch = createEventDispatcher() - function changeTag (e: CustomEvent<{ tag: Ref }>): void { + function changeTag(e: CustomEvent<{ tag: Ref }>): void { if (e.detail !== undefined) { _id = e.detail.tag params._id = _id diff --git a/plugins/process-resources/src/components/settings/Navigator.svelte b/plugins/process-resources/src/components/settings/Navigator.svelte index 54cfb6d408..3ed4e3a876 100644 --- a/plugins/process-resources/src/components/settings/Navigator.svelte +++ b/plugins/process-resources/src/components/settings/Navigator.svelte @@ -23,7 +23,7 @@ export let states: State[] = [] export let transitions: Transition[] = [] - function handleSelect (id: Ref): void { + function handleSelect(id: Ref): void { const loc = getCurrentLocation() loc.path[5] = process.component.TransitionEditor loc.path[6] = id diff --git a/plugins/process-resources/src/components/settings/ParamsEditor.svelte b/plugins/process-resources/src/components/settings/ParamsEditor.svelte index 6a6b259030..ffa8a75e88 100644 --- a/plugins/process-resources/src/components/settings/ParamsEditor.svelte +++ b/plugins/process-resources/src/components/settings/ParamsEditor.svelte @@ -26,7 +26,7 @@ const dispatch = createEventDispatcher() - function change (e: CustomEvent, key: string): void { + function change(e: CustomEvent, key: string): void { if (e.detail?.value != null && e.detail.value !== '') { ;(params as any)[key] = e.detail.value } else { diff --git a/plugins/process-resources/src/components/settings/ProcessAttributeEditor.svelte b/plugins/process-resources/src/components/settings/ProcessAttributeEditor.svelte index cbd4a07d54..24976c6bfa 100644 --- a/plugins/process-resources/src/components/settings/ProcessAttributeEditor.svelte +++ b/plugins/process-resources/src/components/settings/ProcessAttributeEditor.svelte @@ -34,7 +34,7 @@ const hierarchy = client.getHierarchy() const dispatch = createEventDispatcher() - function onChange (value: any | undefined): void { + function onChange(value: any | undefined): void { if (value === undefined) { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete (object as any)[objectKey ?? key] @@ -50,7 +50,7 @@ $: slot = process.requiredSlots?.[key] as any - function getAttr (_class: Ref>, key: string, slot: SlotModel | undefined): AnyAttribute | undefined { + function getAttr(_class: Ref>, key: string, slot: SlotModel | undefined): AnyAttribute | undefined { if (slot !== undefined) return { name: key, label: slot.label, _id: key, type: slot } as any const attr = hierarchy.findAttribute(_class, key) if (attr !== undefined) return attr @@ -58,7 +58,7 @@ return undefined } - function mockAttribute (_class: Ref>): AnyAttribute { + function mockAttribute(_class: Ref>): AnyAttribute { const type: RefTo = { label: core.string.Ref, _class: core.class.RefTo, @@ -85,7 +85,7 @@ let editor: AnySvelteComponent | undefined - function getBaseEditor (_class: Ref>, key: string): void { + function getBaseEditor(_class: Ref>, key: string): void { void getAttributeEditor(client, _class, key).then((p) => { editor = p }) diff --git a/plugins/process-resources/src/components/settings/ProcessEditor.svelte b/plugins/process-resources/src/components/settings/ProcessEditor.svelte index 3716151c9c..e24ef387e1 100644 --- a/plugins/process-resources/src/components/settings/ProcessEditor.svelte +++ b/plugins/process-resources/src/components/settings/ProcessEditor.svelte @@ -95,13 +95,13 @@ } ) - async function saveName (): Promise { + async function saveName(): Promise { if (value !== undefined) { await client.update(value, { name: value.name }) } } - async function deleteProcess (): Promise { + async function deleteProcess(): Promise { if (value === undefined) return // to do handle on server trigger await client.remove(value) @@ -111,7 +111,7 @@ navigate(loc) } - async function handleDelete (): Promise { + async function handleDelete(): Promise { if (value === undefined) return const execution = await client.findOne(process.class.Execution, { process: value?._id }) if (execution !== undefined) { @@ -129,7 +129,7 @@ defineSeparators('spaceTypeEditor', secondNavSeparators) - function handleContext (): void { + function handleContext(): void { $settingsStore = { id: value?._id, component: ContextEditor, @@ -137,11 +137,11 @@ } } - function handleSettings (): void { + function handleSettings(): void { showPopup(ProcesssSetting, { value }) } - function handleBindings (): void { + function handleBindings(): void { showPopup(BindingsEditor, { process: value }) } @@ -160,7 +160,7 @@ } ] - function onExportSelected (event: CustomEvent): void { + function onExportSelected(event: CustomEvent): void { if (event.detail === EXPORT_WITH_SLOTS) { handleExport(true) } else if (event.detail === EXPORT_WITHOUT_SLOTS) { @@ -168,7 +168,7 @@ } } - function handleExport (withSlots: boolean): void { + function handleExport(withSlots: boolean): void { if (value === undefined) return const str = JSON.stringify( exportProcess(value, withSlots).docs.map((doc) => { diff --git a/plugins/process-resources/src/components/settings/ProcesssSetting.svelte b/plugins/process-resources/src/components/settings/ProcesssSetting.svelte index 845e2053b9..4f60610d7b 100644 --- a/plugins/process-resources/src/components/settings/ProcesssSetting.svelte +++ b/plugins/process-resources/src/components/settings/ProcesssSetting.svelte @@ -24,19 +24,19 @@ const client = getClient() const dispatch = createEventDispatcher() - async function saveRestriction (e: CustomEvent): Promise { + async function saveRestriction(e: CustomEvent): Promise { if (value !== undefined) { await client.update(value, { parallelExecutionForbidden: e.detail }) } } - async function saveAutoStart (e: CustomEvent): Promise { + async function saveAutoStart(e: CustomEvent): Promise { if (value !== undefined) { await client.update(value, { autoStart: e.detail }) } } - async function saveAutomationOnly (e: CustomEvent): Promise { + async function saveAutomationOnly(e: CustomEvent): Promise { if (value !== undefined) { await client.update(value, { automationOnly: e.detail }) } diff --git a/plugins/process-resources/src/components/settings/ResultCriteriaEditor.svelte b/plugins/process-resources/src/components/settings/ResultCriteriaEditor.svelte index 43115fad22..e928fc1e9b 100644 --- a/plugins/process-resources/src/components/settings/ResultCriteriaEditor.svelte +++ b/plugins/process-resources/src/components/settings/ResultCriteriaEditor.svelte @@ -32,7 +32,7 @@ let keys = Object.keys(result) as ContextId[] - function getResults (_id: string | undefined): void { + function getResults(_id: string | undefined): void { results = [] if (_id == null) return const ctx = parseContext(_id) @@ -48,11 +48,11 @@ $: availableResults = results.filter((r) => !keys.includes(r._id)) - function addKey (key: ContextId): void { + function addKey(key: ContextId): void { keys = [...keys, key] } - function onAdd (e: MouseEvent): void { + function onAdd(e: MouseEvent): void { showPopup( SelectPopup, { @@ -69,14 +69,14 @@ ) } - function change (e: CustomEvent, key: string): void { + function change(e: CustomEvent, key: string): void { if (e.detail !== undefined) { ;(result as any)[key] = e.detail dispatch('change', result) } } - function remove (key: string): void { + function remove(key: string): void { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete (result as any)[key] keys = keys.filter((k) => k !== key) diff --git a/plugins/process-resources/src/components/settings/ResultEditor.svelte b/plugins/process-resources/src/components/settings/ResultEditor.svelte index 35ea436716..7c655c55c1 100644 --- a/plugins/process-resources/src/components/settings/ResultEditor.svelte +++ b/plugins/process-resources/src/components/settings/ResultEditor.svelte @@ -33,7 +33,7 @@ const client = getClient() - async function update (): Promise { + async function update(): Promise { if (type == null) { result = null } else { @@ -54,7 +54,7 @@ dispatch('change', result) } - function handleNameChange (): void { + function handleNameChange(): void { if (result != null) { result.name = name dispatch('change', result) diff --git a/plugins/process-resources/src/components/settings/ResultFieldTypeEditor.svelte b/plugins/process-resources/src/components/settings/ResultFieldTypeEditor.svelte index 5ed7d6beb3..bdc86ac88c 100644 --- a/plugins/process-resources/src/components/settings/ResultFieldTypeEditor.svelte +++ b/plugins/process-resources/src/components/settings/ResultFieldTypeEditor.svelte @@ -31,7 +31,7 @@ const dispatch = createEventDispatcher() $: setType(key) - function setType (key: string | undefined): void { + function setType(key: string | undefined): void { const attr = key != null ? hierarchy.findAttribute(process.masterTag, key) : undefined if (attr != null) { type = attr.type @@ -41,7 +41,7 @@ dispatch('change') } - function getKeys (_class: Ref>): AnyAttribute[] { + function getKeys(_class: Ref>): AnyAttribute[] { const ignoreKeys = ['_class', 'content', 'parent', 'attachments', 'todos'] const attributes = hierarchy.getAllAttributes(_class, core.class.Doc) const res: AnyAttribute[] = [] diff --git a/plugins/process-resources/src/components/settings/ResultTypeEditor.svelte b/plugins/process-resources/src/components/settings/ResultTypeEditor.svelte index beb2b1ac38..701257cbd5 100644 --- a/plugins/process-resources/src/components/settings/ResultTypeEditor.svelte +++ b/plugins/process-resources/src/components/settings/ResultTypeEditor.svelte @@ -28,7 +28,7 @@ const hierarchy = client.getHierarchy() const dispatch = createEventDispatcher() - function getTypes (): DropdownIntlItem[] { + function getTypes(): DropdownIntlItem[] { const descendants = hierarchy.getDescendants(core.class.Type) const res: DropdownIntlItem[] = [] for (const descendant of descendants) { @@ -46,7 +46,7 @@ let selectedType: Ref>> | undefined = type?._class $: selectType(selectedType) - function selectType (type: Ref>> | undefined): void { + function selectType(type: Ref>> | undefined): void { if (type == null) return const _class = hierarchy.getClass(type) const editor = hierarchy.as(_class, view.mixin.ObjectEditor) diff --git a/plugins/process-resources/src/components/settings/ResultsEditor.svelte b/plugins/process-resources/src/components/settings/ResultsEditor.svelte index cb1b0ac285..f1ce9ab3ca 100644 --- a/plugins/process-resources/src/components/settings/ResultsEditor.svelte +++ b/plugins/process-resources/src/components/settings/ResultsEditor.svelte @@ -26,7 +26,7 @@ let items: (UserResult | null)[] = result ?? [] - function handleChange (e: CustomEvent, index: number) { + function handleChange(e: CustomEvent, index: number) { if (e.detail !== undefined) { items[index === -1 ? items.length : index] = e.detail result = items.filter((r) => r != null) @@ -34,12 +34,12 @@ } } - function onAdd (): void { + function onAdd(): void { items.push(null) items = items } - function remove (index: number): void { + function remove(index: number): void { items.splice(index, 1) items = items result = items.filter((r) => r != null) diff --git a/plugins/process-resources/src/components/settings/StateInlineEditor.svelte b/plugins/process-resources/src/components/settings/StateInlineEditor.svelte index 0853987937..d6bd249ac5 100644 --- a/plugins/process-resources/src/components/settings/StateInlineEditor.svelte +++ b/plugins/process-resources/src/components/settings/StateInlineEditor.svelte @@ -21,11 +21,11 @@ export let value: State const client = getClient() - async function saveTitle (): Promise { + async function saveTitle(): Promise { await client.update(value, { title: value.title }) } - async function handleDelete (): Promise { + async function handleDelete(): Promise { await client.remove(value) } diff --git a/plugins/process-resources/src/components/settings/StatesInlineEditor.svelte b/plugins/process-resources/src/components/settings/StatesInlineEditor.svelte index 73c81fe5c4..61ea0ab9ca 100644 --- a/plugins/process-resources/src/components/settings/StatesInlineEditor.svelte +++ b/plugins/process-resources/src/components/settings/StatesInlineEditor.svelte @@ -29,7 +29,7 @@ const client = getClient() - async function addState (): Promise { + async function addState(): Promise { const rank = makeRank(states.length > 0 ? states[states.length - 1].rank : undefined, undefined) await client.createDoc(plugin.class.State, core.space.Model, { process: process._id, @@ -38,7 +38,7 @@ }) } - function toState (doc: Doc): State { + function toState(doc: Doc): State { return doc as State } diff --git a/plugins/process-resources/src/components/settings/StepEditor.svelte b/plugins/process-resources/src/components/settings/StepEditor.svelte index 3f1a5eef0c..a37dc7cb1a 100644 --- a/plugins/process-resources/src/components/settings/StepEditor.svelte +++ b/plugins/process-resources/src/components/settings/StepEditor.svelte @@ -28,12 +28,12 @@ $: method = getMethod(step.methodId) - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { step = e.detail dispatch('change', step) } - function getMethod (_id: Ref>): Method { + function getMethod(_id: Ref>): Method { if (method?._id !== _id) { const res = client.getModel().findAllSync(plugin.class.Method, { _id })[0] return res diff --git a/plugins/process-resources/src/components/settings/SubProcessEditor.svelte b/plugins/process-resources/src/components/settings/SubProcessEditor.svelte index 5a2f2c9ca4..462b899671 100644 --- a/plugins/process-resources/src/components/settings/SubProcessEditor.svelte +++ b/plugins/process-resources/src/components/settings/SubProcessEditor.svelte @@ -38,7 +38,7 @@ const dispatch = createEventDispatcher() - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (e.detail !== undefined) { ;(step.params as any)._id = e.detail _id = e.detail @@ -62,16 +62,16 @@ $: processes = client.getModel().findAllSync(plugin.class.Process, { masterTag: { $in: ancestors } }) - function changeThis (): void { + function changeThis(): void { step.params = {} dispatch('change', step) } - function changeTarget (e: CustomEvent): void { + function changeTarget(e: CustomEvent): void { step.params.card = e.detail.value } - function changeContext (e: CustomEvent): void { + function changeContext(e: CustomEvent): void { if (e.detail !== undefined) { step.params.context = e.detail dispatch('change', step) diff --git a/plugins/process-resources/src/components/settings/SubProcessMatchEditor.svelte b/plugins/process-resources/src/components/settings/SubProcessMatchEditor.svelte index 1e74a0097d..672cc4f319 100644 --- a/plugins/process-resources/src/components/settings/SubProcessMatchEditor.svelte +++ b/plugins/process-resources/src/components/settings/SubProcessMatchEditor.svelte @@ -31,7 +31,7 @@ $: possibleProcesses = getPossibleProcesses(process) - function getPossibleProcesses (proc: Process): Ref[] { + function getPossibleProcesses(proc: Process): Ref[] { const res = new Set>() const transitions = client.getModel().findAllSync(plugin.class.Transition, { process: proc._id }) for (const transition of transitions) { @@ -58,7 +58,7 @@ $: selected = selectedProcessId !== undefined ? items.find((it) => it.id === selectedProcessId)?.id : undefined - function changeProcess (e: CustomEvent): void { + function changeProcess(e: CustomEvent): void { if (readonly || e.detail == null) return selectedProcessId = e.detail params = { @@ -67,7 +67,7 @@ dispatch('change', { params }) } - function changeStateCriteria (e: CustomEvent): void { + function changeStateCriteria(e: CustomEvent): void { if (readonly || e.detail == null) return params = { ...params, diff --git a/plugins/process-resources/src/components/settings/TagSelector.svelte b/plugins/process-resources/src/components/settings/TagSelector.svelte index 0c9e8fcc9b..d4b158c18a 100644 --- a/plugins/process-resources/src/components/settings/TagSelector.svelte +++ b/plugins/process-resources/src/components/settings/TagSelector.svelte @@ -29,7 +29,7 @@ const dispatch = createEventDispatcher() - function open (e: MouseEvent): void { + function open(e: MouseEvent): void { const res = new Set>() if (includeBase) res.add(h.getBaseClass(process.masterTag)) const ancestors = h.getAncestors(process.masterTag) diff --git a/plugins/process-resources/src/components/settings/TimeEditor.svelte b/plugins/process-resources/src/components/settings/TimeEditor.svelte index f4d924f07f..b6c8a9c89e 100644 --- a/plugins/process-resources/src/components/settings/TimeEditor.svelte +++ b/plugins/process-resources/src/components/settings/TimeEditor.svelte @@ -41,7 +41,7 @@ let editor: AnySvelteComponent | undefined - function getEditor (): void { + function getEditor(): void { try { const inlineEditor = h.as(h.getClass(core.class.TypeDate), view.mixin.AttributeEditor).inlineEditor void getResource(inlineEditor) diff --git a/plugins/process-resources/src/components/settings/ToDoEditor.svelte b/plugins/process-resources/src/components/settings/ToDoEditor.svelte index 8fdb3712a6..25fa9b30b7 100644 --- a/plugins/process-resources/src/components/settings/ToDoEditor.svelte +++ b/plugins/process-resources/src/components/settings/ToDoEditor.svelte @@ -27,7 +27,7 @@ const dispatch = createEventDispatcher() - function changeParams (e: CustomEvent): void { + function changeParams(e: CustomEvent): void { if (e.detail !== undefined) { params = e.detail ;(step.params as any) = params @@ -35,7 +35,7 @@ } } - function changeResults (e: CustomEvent): void { + function changeResults(e: CustomEvent): void { if (e.detail !== undefined) { step.results = e.detail dispatch('change', step) @@ -53,7 +53,7 @@ dispatch('change', step) } - function toggleField (e: CustomEvent): void { + function toggleField(e: CustomEvent): void { if (e.detail) { if (contextValue?.type === 'attribute') { params.field = contextValue.key @@ -67,7 +67,7 @@ let askRequired = params.askRequired ?? false $: askRequired = params.askRequired ?? false - function changeAskRequired (e: CustomEvent): void { + function changeAskRequired(e: CustomEvent): void { if (e.detail !== undefined) { params.askRequired = e.detail step.params = params diff --git a/plugins/process-resources/src/components/settings/ToDoParamsEditor.svelte b/plugins/process-resources/src/components/settings/ToDoParamsEditor.svelte index b865e047ee..540f8ccf8c 100644 --- a/plugins/process-resources/src/components/settings/ToDoParamsEditor.svelte +++ b/plugins/process-resources/src/components/settings/ToDoParamsEditor.svelte @@ -28,14 +28,14 @@ const dispatch = createEventDispatcher() - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (readonly || e.detail == null) return params._id = e.detail params.result = {} dispatch('change', { params }) } - function changeResult (e: CustomEvent): void { + function changeResult(e: CustomEvent): void { if (readonly) return params.result = e.detail dispatch('change', { params }) diff --git a/plugins/process-resources/src/components/settings/ToDoPresenter.svelte b/plugins/process-resources/src/components/settings/ToDoPresenter.svelte index 548bda7977..642c39273f 100644 --- a/plugins/process-resources/src/components/settings/ToDoPresenter.svelte +++ b/plugins/process-resources/src/components/settings/ToDoPresenter.svelte @@ -23,7 +23,7 @@ $: context = getContext(params._id) - function getContext (value: string | undefined): SelectedExecutionContext | undefined { + function getContext(value: string | undefined): SelectedExecutionContext | undefined { if (value === undefined) return const context = parseContext(value) if (context !== undefined && isExecutionContext(context)) { @@ -31,7 +31,7 @@ } } - function isExecutionContext (context: SelectedContext): context is SelectedExecutionContext { + function isExecutionContext(context: SelectedContext): context is SelectedExecutionContext { return context.type === 'context' } diff --git a/plugins/process-resources/src/components/settings/ToDoValuePresenter.svelte b/plugins/process-resources/src/components/settings/ToDoValuePresenter.svelte index 54dc4c6917..7720bf94d2 100644 --- a/plugins/process-resources/src/components/settings/ToDoValuePresenter.svelte +++ b/plugins/process-resources/src/components/settings/ToDoValuePresenter.svelte @@ -34,7 +34,7 @@ $: context = getContext(step.params._id as string) - function getContext (value: string | undefined): SelectedExecutionContext | undefined { + function getContext(value: string | undefined): SelectedExecutionContext | undefined { if (value === undefined) return const context = parseContext(value) if (context !== undefined && isExecutionContext(context)) { @@ -42,7 +42,7 @@ } } - function isExecutionContext (context: SelectedContext): context is SelectedExecutionContext { + function isExecutionContext(context: SelectedContext): context is SelectedExecutionContext { return context.type === 'context' } diff --git a/plugins/process-resources/src/components/settings/TransitionEditor.svelte b/plugins/process-resources/src/components/settings/TransitionEditor.svelte index 465956d097..93b1942ccf 100644 --- a/plugins/process-resources/src/components/settings/TransitionEditor.svelte +++ b/plugins/process-resources/src/components/settings/TransitionEditor.svelte @@ -72,7 +72,7 @@ ]) }) - function getTitle (transition: Transition): string { + function getTitle(transition: Transition): string { const to = client.getModel().findAllSync(plugin.class.State, { _id: transition.to })[0] if (transition.from == null) { return `⦳ → ${to.title}` @@ -83,7 +83,7 @@ const client = getClient() - function addAction (e: MouseEvent): void { + function addAction(e: MouseEvent): void { const items: DropdownIntlItem[] = client .getModel() .findAllSync(plugin.class.Method, {}) @@ -103,7 +103,7 @@ }) } - function editAction (step: Step): void { + function editAction(step: Step): void { if (value === undefined) return $settingsStore = { id: value._id, component: AsideStepEditor, props: { process, step, _id: value._id } } } @@ -123,7 +123,7 @@ transitions = res }) - async function handleDelete (): Promise { + async function handleDelete(): Promise { if (value === undefined) return // to do handle on server trigger await client.remove(value) @@ -134,11 +134,11 @@ navigate(loc) } - function edit (): void { + function edit(): void { $settingsStore = { id: _id, component: AsideTransitionEditor, props: { process, transition: value } } } - async function moveHadler (): Promise { + async function moveHadler(): Promise { if (value === undefined) return await client.update(value, { actions: value.actions }) } diff --git a/plugins/process-resources/src/components/settings/TransitionsInlineEditor.svelte b/plugins/process-resources/src/components/settings/TransitionsInlineEditor.svelte index 24b6a963bd..b52316e4fc 100644 --- a/plugins/process-resources/src/components/settings/TransitionsInlineEditor.svelte +++ b/plugins/process-resources/src/components/settings/TransitionsInlineEditor.svelte @@ -25,18 +25,18 @@ export let process: Process export let readonly: boolean - function addTransition (): void { + function addTransition(): void { showPopup(AddTransitionPopup, { process }, 'top') } - function handleSelect (id: Ref): void { + function handleSelect(id: Ref): void { const loc = getCurrentLocation() loc.path[5] = plugin.component.TransitionEditor loc.path[6] = id navigate(loc, true) } - function toTransition (doc: Doc): Transition { + function toTransition(doc: Doc): Transition { return doc as Transition } diff --git a/plugins/process-resources/src/components/settings/TriggerPresenter.svelte b/plugins/process-resources/src/components/settings/TriggerPresenter.svelte index 2d3bedf440..30c98912fc 100644 --- a/plugins/process-resources/src/components/settings/TriggerPresenter.svelte +++ b/plugins/process-resources/src/components/settings/TriggerPresenter.svelte @@ -30,7 +30,7 @@ $: validate(params) - function validate (params: Record): void { + function validate(params: Record): void { if (trigger === undefined) { error = false } diff --git a/plugins/process-resources/src/components/settings/UpdateCardEditor.svelte b/plugins/process-resources/src/components/settings/UpdateCardEditor.svelte index 759d67c5db..27e0fa004b 100644 --- a/plugins/process-resources/src/components/settings/UpdateCardEditor.svelte +++ b/plugins/process-resources/src/components/settings/UpdateCardEditor.svelte @@ -31,7 +31,7 @@ const dispatch = createEventDispatcher() - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (e.detail !== undefined) { params = e.detail ;(step.params as any) = e.detail @@ -39,7 +39,7 @@ } } - function getKeys (_class: Ref>): AnyAttribute[] { + function getKeys(_class: Ref>): AnyAttribute[] { const ignoreKeys = ['_class', 'content', 'parent', 'attachments', 'todos'] const attributes = hierarchy.getAllAttributes(_class, core.class.Doc) const res: AnyAttribute[] = [] @@ -61,11 +61,11 @@ })) $: possibleAttrs = [...allAttrs, ...slots].filter((attr) => !keys.includes(attr.name)) - function addKey (key: string): void { + function addKey(key: string): void { keys = [...keys, key] } - function onAdd (e: MouseEvent): void { + function onAdd(e: MouseEvent): void { showPopup( SelectPopup, { @@ -82,7 +82,7 @@ ) } - function remove (e: CustomEvent): void { + function remove(e: CustomEvent): void { if (e.detail !== undefined) { const key = e.detail.key keys = keys.filter((k) => k !== key) diff --git a/plugins/process-resources/src/components/transformEditors/AppendEditor.svelte b/plugins/process-resources/src/components/transformEditors/AppendEditor.svelte index 05905ea923..6f28a25c86 100644 --- a/plugins/process-resources/src/components/transformEditors/AppendEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/AppendEditor.svelte @@ -37,13 +37,13 @@ const client = getClient() const h = client.getHierarchy() - function save (): void { + function save(): void { dispatch('close', { value }) } let editor: AnySvelteComponent | undefined - function getEditor (): void { + function getEditor(): void { try { const inlineEditor = h.as(h.getClass(core.class.TypeString), view.mixin.AttributeEditor).inlineEditor void getResource(inlineEditor) diff --git a/plugins/process-resources/src/components/transformEditors/ArrayElementEditor.svelte b/plugins/process-resources/src/components/transformEditors/ArrayElementEditor.svelte index 6290ae56ba..4082224424 100644 --- a/plugins/process-resources/src/components/transformEditors/ArrayElementEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/ArrayElementEditor.svelte @@ -34,7 +34,7 @@ const client = getClient() const h = client.getHierarchy() - function save (): void { + function save(): void { dispatch('close', { value }) } diff --git a/plugins/process-resources/src/components/transformEditors/CutEditor.svelte b/plugins/process-resources/src/components/transformEditors/CutEditor.svelte index fc795844a7..50f3b9d66e 100644 --- a/plugins/process-resources/src/components/transformEditors/CutEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/CutEditor.svelte @@ -28,7 +28,7 @@ const dispatch = createEventDispatcher() - function save (): void { + function save(): void { dispatch('close', { start, end }) } diff --git a/plugins/process-resources/src/components/transformEditors/DateDifferenceEditor.svelte b/plugins/process-resources/src/components/transformEditors/DateDifferenceEditor.svelte index 9cd1e3cebc..fe3c4c3e1d 100644 --- a/plugins/process-resources/src/components/transformEditors/DateDifferenceEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/DateDifferenceEditor.svelte @@ -46,13 +46,13 @@ const client = getClient() const h = client.getHierarchy() - function save (): void { + function save(): void { dispatch('close', { otherDate, unit }) } let editor: AnySvelteComponent | undefined - function getEditor (): void { + function getEditor(): void { try { const inlineEditor = h.as(h.getClass(core.class.TypeDate), view.mixin.AttributeEditor).inlineEditor void getResource(inlineEditor) diff --git a/plugins/process-resources/src/components/transformEditors/DateOffsetEditor.svelte b/plugins/process-resources/src/components/transformEditors/DateOffsetEditor.svelte index 8f2e8941e8..05f40f17e5 100644 --- a/plugins/process-resources/src/components/transformEditors/DateOffsetEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/DateOffsetEditor.svelte @@ -37,7 +37,7 @@ const dispatch = createEventDispatcher() - function save (): void { + function save(): void { dispatch('close', { offset, offsetType, diff --git a/plugins/process-resources/src/components/transformEditors/FilterEditor.svelte b/plugins/process-resources/src/components/transformEditors/FilterEditor.svelte index 8c4b5dbc05..239c77bf3d 100644 --- a/plugins/process-resources/src/components/transformEditors/FilterEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/FilterEditor.svelte @@ -31,14 +31,14 @@ const hierarchy = client.getHierarchy() const presenterClass = getAttributePresenterClass(hierarchy, attribute.type) - function save (): void { + function save(): void { dispatch('close', { ...props, _class: presenterClass.attrClass }) } - function getKeys (): AnyAttribute[] { + function getKeys(): AnyAttribute[] { const attributes = hierarchy.getAllAttributes(presenterClass.attrClass, core.class.Doc) const res: AnyAttribute[] = [] for (const [key, attr] of attributes) { @@ -58,7 +58,7 @@ const allAttrs = getKeys() $: possibleAttrs = allAttrs.filter((attr) => !keys.includes(attr.name)) - function onAdd (e: MouseEvent): void { + function onAdd(e: MouseEvent): void { showPopup( SelectPopup, { @@ -75,11 +75,11 @@ ) } - function addKey (key: string): void { + function addKey(key: string): void { keys = [...keys, key] } - function remove (e: CustomEvent): void { + function remove(e: CustomEvent): void { if (e.detail !== undefined) { const key = e.detail.key keys = keys.filter((k) => k !== key) @@ -88,7 +88,7 @@ } } - function change (e: CustomEvent): void { + function change(e: CustomEvent): void { if (e.detail == null) return props = e.detail } diff --git a/plugins/process-resources/src/components/transformEditors/NumberEditor.svelte b/plugins/process-resources/src/components/transformEditors/NumberEditor.svelte index b364ee3070..2c5d62ef3a 100644 --- a/plugins/process-resources/src/components/transformEditors/NumberEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/NumberEditor.svelte @@ -37,13 +37,13 @@ const client = getClient() const h = client.getHierarchy() - function save (): void { + function save(): void { dispatch('close', { value }) } let editor: AnySvelteComponent | undefined - function getEditor (): void { + function getEditor(): void { try { const inlineEditor = h.as(h.getClass(core.class.TypeNumber), view.mixin.AttributeEditor).inlineEditor void getResource(inlineEditor) diff --git a/plugins/process-resources/src/components/transformEditors/ReplaceEditor.svelte b/plugins/process-resources/src/components/transformEditors/ReplaceEditor.svelte index 62058de615..a0776d3cc5 100644 --- a/plugins/process-resources/src/components/transformEditors/ReplaceEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/ReplaceEditor.svelte @@ -28,7 +28,7 @@ const dispatch = createEventDispatcher() - function save (): void { + function save(): void { dispatch('close', { search, replacement }) } diff --git a/plugins/process-resources/src/components/transformEditors/SplitEditor.svelte b/plugins/process-resources/src/components/transformEditors/SplitEditor.svelte index 6f461ab463..a9491cd601 100644 --- a/plugins/process-resources/src/components/transformEditors/SplitEditor.svelte +++ b/plugins/process-resources/src/components/transformEditors/SplitEditor.svelte @@ -27,7 +27,7 @@ const dispatch = createEventDispatcher() - function save (): void { + function save(): void { dispatch('close', { separator }) } diff --git a/plugins/process-resources/src/exporter.ts b/plugins/process-resources/src/exporter.ts index 2cce2783f8..f9f9a9f0b5 100644 --- a/plugins/process-resources/src/exporter.ts +++ b/plugins/process-resources/src/exporter.ts @@ -95,7 +95,7 @@ function processToSlot (proc: Process, memberOf?: string): SlotModel { function unknownToSlot (id: string, memberOf?: string): SlotModel { return { slotKind: 'unknown', - _class: core.class.Obj as any, + _class: core.class.Obj, label: id as any, name: id, memberOf @@ -148,7 +148,7 @@ function processParams ( } continue } - const attr = h.findAttribute(masterTag as any, key) + const attr = h.findAttribute(masterTag, key) if (attr !== undefined) { processType(attr.type, docs, required, m, h) } @@ -171,12 +171,12 @@ function scanDSL ( ): void { // Detect @attr references for (const m of dsl.matchAll(/\$\{@([a-zA-Z0-9_]+)/g)) { - const attr = h.findAttribute(masterTag as any, m[1]) + const attr = h.findAttribute(masterTag, m[1]) if (attr !== undefined) processType(attr.type, docs, required, model, h) } // Detect inline 24-char hex IDs for (const match of dsl.matchAll(/[0-9a-fA-F]{24}/g)) { - const obj = h.findAttribute(masterTag as any, match[0]) ?? model.findObject(match[0] as any) + const obj = h.findAttribute(masterTag, match[0]) ?? model.findObject(match[0] as any) if ((obj as any)?.type !== undefined) { processType((obj as any).type, docs, required, model, h) } @@ -437,7 +437,7 @@ function replaceIdInJson (json: string, id: string, replacement: string): string export function denormalizeIds (docs: Doc[], masterTag: Ref, bindings?: Record): Doc[] { const idMap: Record = { __PROCESS__: generateId(), - __MASTER_TAG__: masterTag as string + __MASTER_TAG__: masterTag } // Map slot placeholders to bound IDs @@ -738,7 +738,7 @@ function mergeAttributeSlotMeta (meta: SlotModel, model: AttributeSlotModel): vo ;(meta as any).type = model.type meta._class = model.type._class } else if (typeof model.type === 'string') { - meta._class = model.type as any + meta._class = model.type } if (model.label !== undefined) meta.label = model.label } diff --git a/plugins/process-resources/src/middleware.ts b/plugins/process-resources/src/middleware.ts index dcc1497bd3..3e06e98aab 100644 --- a/plugins/process-resources/src/middleware.ts +++ b/plugins/process-resources/src/middleware.ts @@ -30,7 +30,7 @@ import core, { } from '@hcengineering/core' import { translate } from '@hcengineering/platform' import { BasePresentationMiddleware, type PresentationMiddleware } from '@hcengineering/presentation' -import { ExecutionStatus, isUpdateTx, type ApproveRequest, type ProcessToDo } from '@hcengineering/process' +import { ExecutionStatus, type ApproveRequest, type ProcessToDo } from '@hcengineering/process' import process from './plugin' import { createExecution, getNextStateUserInput, pickTransition, requestResult } from './utils' @@ -108,9 +108,17 @@ export class ProcessMiddleware extends BasePresentationMiddleware implements Pre _id: updateTx.objectId }) if (card === undefined) return - const updated = isUpdateTx(updateTx) - ? TxProcessor.updateDoc2Doc(hierarchy.clone(card), updateTx) - : TxProcessor.updateMixin4Doc(hierarchy.clone(card), updateTx) + let updated: Card + let operations: TxUpdateDoc['operations'] | TxMixin['attributes'] + if (etx._class === core.class.TxUpdateDoc) { + const documentUpdateTx = etx as TxUpdateDoc + updated = TxProcessor.updateDoc2Doc(hierarchy.clone(card), documentUpdateTx) + operations = documentUpdateTx.operations + } else { + const mixinUpdateTx = etx as TxMixin + updated = TxProcessor.updateMixin4Doc(hierarchy.clone(card), mixinUpdateTx) + operations = mixinUpdateTx.attributes + } for (const execution of executions) { const transitions = this.client.getModel().findAllSync( process.class.Transition, @@ -125,7 +133,7 @@ export class ProcessMiddleware extends BasePresentationMiddleware implements Pre const inputContext = { ...execution.context, card: updated, - operations: isUpdateTx(updateTx) ? updateTx.operations : updateTx.attributes + operations } const transition = await pickTransition(this.client, execution, transitions, inputContext) if (transition === undefined) continue diff --git a/plugins/process-resources/src/utils.ts b/plugins/process-resources/src/utils.ts index bbbea56c54..d3e3ce9961 100644 --- a/plugins/process-resources/src/utils.ts +++ b/plugins/process-resources/src/utils.ts @@ -122,7 +122,7 @@ export function getContextMasterTag ( const assoc = model.findObject(context.association) if (assoc === undefined) return const targetClass = context.direction === 'A' ? assoc.classA : assoc.classB - if (context.key === '_id') return targetClass as Ref + if (context.key === '_id') return targetClass const nested = h.findAttribute(targetClass, context.key) return (nested?.type as RefTo)?.to } @@ -304,7 +304,7 @@ export function getContext ( if (includeConvertible) { const funcs = client.getModel().findAllSync(process.class.ProcessFunction, { type: 'convert', to: target }) for (const func of funcs) { - const convContext = getContext(client, _process, func.of as Ref>>, category, attr, false) + const convContext = getContext(client, _process, func.of, category, attr, false) if ( convContext.attributes.length > 0 || Object.keys(convContext.executionContext).length > 0 || diff --git a/plugins/process/.eslintrc.js b/plugins/process/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/process/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/process/eslint.config.mjs b/plugins/process/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/process/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/process/package.json b/plugins/process/package.json index 20f93d4acd..a54f485868 100644 --- a/plugins/process/package.json +++ b/plugins/process/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/process/src/index.ts b/plugins/process/src/index.ts index 9568ea8602..74fc7dc35e 100644 --- a/plugins/process/src/index.ts +++ b/plugins/process/src/index.ts @@ -158,7 +158,7 @@ export interface ApproveRequest extends ProcessToDo { export type MethodParams = { [P in keyof T]?: ObjQueryType | string } & DocumentUpdate & -Record + Record export interface State extends Doc { process: Ref @@ -237,7 +237,7 @@ export interface UpdateCriteriaComponent extends Doc { export * from './dslContext' export * from './errors' -export * from './types' +export type * from './types' export * from './utils' export default plugin(processId, { diff --git a/plugins/products-assets/.eslintrc.js b/plugins/products-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/products-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/products-assets/eslint.config.mjs b/plugins/products-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/products-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/products-assets/package.json b/plugins/products-assets/package.json index 7ff8ab0941..e716539d4f 100644 --- a/plugins/products-assets/package.json +++ b/plugins/products-assets/package.json @@ -25,20 +25,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/products-assets/src/lang.ts b/plugins/products-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/products-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/products-resources/.eslintrc.js b/plugins/products-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/products-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/products-resources/eslint.config.mjs b/plugins/products-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/products-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/products-resources/package.json b/plugins/products-resources/package.json index f646de9bea..c5a97153ae 100644 --- a/plugins/products-resources/package.json +++ b/plugins/products-resources/package.json @@ -17,23 +17,22 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/products-resources/src/components/product-version/CreateProductVersion.svelte b/plugins/products-resources/src/components/product-version/CreateProductVersion.svelte index dd05046f52..8ca4edd84e 100644 --- a/plugins/products-resources/src/components/product-version/CreateProductVersion.svelte +++ b/plugins/products-resources/src/components/product-version/CreateProductVersion.svelte @@ -70,7 +70,7 @@ $: updateSeverity(parent, severity) - function updateSeverity (parent: ProductVersion | null | undefined, severity: Severity): void { + function updateSeverity(parent: ProductVersion | null | undefined, severity: Severity): void { if (parent != null) { object.major = severity === 'major' ? parent.major + 1 : parent.major object.minor = severity === 'minor' ? parent.minor + 1 : 0 @@ -82,15 +82,15 @@ } } - function formatProductVersion (object: ProductVersionDraft): string { + function formatProductVersion(object: ProductVersionDraft): string { return `${object.major}.${object.minor}.${object.patch}` } - function formatProductVersionName (object: ProductVersionDraft): string { + function formatProductVersionName(object: ProductVersionDraft): string { return `${formatProductVersion(object)}` + (object.codename != null ? ` ${object.codename}` : '') } - async function handleOkAction (): Promise { + async function handleOkAction(): Promise { if (space === undefined) { return } @@ -120,7 +120,7 @@ dispatch('close', id) } - async function handleClose (): Promise { + async function handleClose(): Promise { const noChanges = deepEqual(object, createDefaultObject()) if (noChanges) { dispatch('close') @@ -141,7 +141,7 @@ } } - function createDefaultObject (): ProductVersionDraft { + function createDefaultObject(): ProductVersionDraft { return { readonly: false, major: 1, diff --git a/plugins/products-resources/src/components/product-version/EditProductVersion.svelte b/plugins/products-resources/src/components/product-version/EditProductVersion.svelte index ad77c4fed3..4ca41bc11c 100644 --- a/plugins/products-resources/src/components/product-version/EditProductVersion.svelte +++ b/plugins/products-resources/src/components/product-version/EditProductVersion.svelte @@ -44,7 +44,7 @@ let lastId: Ref = _id $: read(_id) - function read (_id: Ref): void { + function read(_id: Ref): void { if (lastId !== _id) { const prev = lastId lastId = _id diff --git a/plugins/products-resources/src/components/product-version/ProductVersionPresenter.svelte b/plugins/products-resources/src/components/product-version/ProductVersionPresenter.svelte index ee500ea796..88055e377e 100644 --- a/plugins/products-resources/src/components/product-version/ProductVersionPresenter.svelte +++ b/plugins/products-resources/src/components/product-version/ProductVersionPresenter.svelte @@ -33,7 +33,7 @@ export let noUnderline: boolean = false export let shouldShowAvatar: boolean = true - function getProductVersionName (value: ProductVersion): string { + function getProductVersionName(value: ProductVersion): string { const version = `${value.major}.${value.minor}.${value.patch}` const codename = value.codename ?? '' return codename !== '' ? `${version} ${codename}` : version diff --git a/plugins/products-resources/src/components/product/CreateProduct.svelte b/plugins/products-resources/src/components/product/CreateProduct.svelte index c9c803b7a8..ab8fc91349 100644 --- a/plugins/products-resources/src/components/product/CreateProduct.svelte +++ b/plugins/products-resources/src/components/product/CreateProduct.svelte @@ -102,16 +102,16 @@ } $: void loadSpaceType(typeId) - async function loadSpaceType (id: typeof typeId): Promise { + async function loadSpaceType(id: typeof typeId): Promise { spaceType = id !== undefined ? await client - .getModel() - .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) + .getModel() + .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) : undefined } - function chooseIcon (): void { + function chooseIcon(): void { const { icon, color } = object const icons = [products.icon.Product] showPopup(IconPicker, { icon, color, icons }, 'top', (result) => { @@ -122,14 +122,14 @@ }) } - function handleOwnersChanged (newOwners: AccountUuid[]): void { + function handleOwnersChanged(newOwners: AccountUuid[]): void { object.owners = newOwners const newMembersSet = new Set([...object.owners, ...object.members]) object.members = Array.from(newMembersSet) } - function handleMembersChanged (newMembers: AccountUuid[]): void { + function handleMembersChanged(newMembers: AccountUuid[]): void { // If a member was removed we need to remove it from any roles assignments as well const newMembersSet = new Set(newMembers) const removedMembersSet = new Set(object.members.filter((m) => !newMembersSet.has(m))) @@ -143,7 +143,7 @@ object.members = newMembers } - function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): void { + function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): void { if (rolesAssignment === undefined) { rolesAssignment = {} } @@ -151,7 +151,7 @@ rolesAssignment[roleId] = newMembers } - async function handleOkAction (): Promise { + async function handleOkAction(): Promise { if (typeId === undefined || spaceType?.targetClass === undefined) { return } @@ -189,7 +189,7 @@ dispatch('close', productId) } - async function handleClose (): Promise { + async function handleClose(): Promise { const noChanges = deepEqual(object, createDefaultObject()) if (noChanges) { dispatch('close') @@ -211,7 +211,7 @@ } } - function createDefaultObject (): Data { + function createDefaultObject(): Data { return { // Space name: '', diff --git a/plugins/products-resources/src/components/product/EditProduct.svelte b/plugins/products-resources/src/components/product/EditProduct.svelte index c4fd56f920..26c5195428 100644 --- a/plugins/products-resources/src/components/product/EditProduct.svelte +++ b/plugins/products-resources/src/components/product/EditProduct.svelte @@ -47,7 +47,7 @@ let lastId: Ref = _id $: read(_id) - function read (_id: Ref): void { + function read(_id: Ref): void { if (lastId !== _id) { const prev = lastId lastId = _id @@ -70,7 +70,7 @@ } }) - function chooseIcon (): void { + function chooseIcon(): void { if (object === undefined) return const { icon, color } = object @@ -83,7 +83,7 @@ showPopup(IconPicker, { icon, color, icons }, 'top', update, update) } - function onChange (key: string, value: any): void { + function onChange(key: string, value: any): void { if (object === undefined) return if (value !== (object as any)[key]) { diff --git a/plugins/products-resources/src/components/product/NewProductHeader.svelte b/plugins/products-resources/src/components/product/NewProductHeader.svelte index 79a460f2a1..9c7993fb94 100644 --- a/plugins/products-resources/src/components/product/NewProductHeader.svelte +++ b/plugins/products-resources/src/components/product/NewProductHeader.svelte @@ -18,7 +18,7 @@ import CreateProduct from './CreateProduct.svelte' import { openDocFromRef } from '@hcengineering/view-resources' - async function newProduct (): Promise { + async function newProduct(): Promise { showPopup(CreateProduct, {}, 'top', async (id) => { if (id != null) { void openDocFromRef(products.class.Product, id) diff --git a/plugins/products/.eslintrc.js b/plugins/products/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/products/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/products/eslint.config.mjs b/plugins/products/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/products/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/products/package.json b/plugins/products/package.json index 2ae63ae023..e7072099f4 100644 --- a/plugins/products/package.json +++ b/plugins/products/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", diff --git a/plugins/pulse/.eslintrc.js b/plugins/pulse/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/pulse/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/pulse/eslint.config.mjs b/plugins/pulse/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/pulse/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/pulse/package.json b/plugins/pulse/package.json index 90ac5de9cf..875a356efa 100644 --- a/plugins/pulse/package.json +++ b/plugins/pulse/package.json @@ -21,19 +21,19 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/pulse/src/index.ts b/plugins/pulse/src/index.ts index 194a5a2ff2..336ea9ae9a 100644 --- a/plugins/pulse/src/index.ts +++ b/plugins/pulse/src/index.ts @@ -15,6 +15,6 @@ import pulsePlugin, { pulseId } from './plugin' -export * from './types' +export type * from './types' export { pulseId } export default pulsePlugin diff --git a/plugins/qalico-assets/eslint.config.mjs b/plugins/qalico-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/qalico-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/qalico-assets/src/lang.ts b/plugins/qalico-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/qalico-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/qalico/eslint.config.mjs b/plugins/qalico/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/qalico/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/questions-assets/.eslintrc.js b/plugins/questions-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/questions-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/questions-assets/eslint.config.mjs b/plugins/questions-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/questions-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/questions-assets/package.json b/plugins/questions-assets/package.json index 595efb34b8..1e1f9635c8 100644 --- a/plugins/questions-assets/package.json +++ b/plugins/questions-assets/package.json @@ -25,19 +25,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/questions": "workspace:^0.7.0", @@ -53,8 +53,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/questions-assets/src/lang.ts b/plugins/questions-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/questions-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/questions-resources/.eslintrc.js b/plugins/questions-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/questions-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/questions-resources/eslint.config.mjs b/plugins/questions-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/questions-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/questions-resources/package.json b/plugins/questions-resources/package.json index 50c099eb16..91cb4ed6b2 100644 --- a/plugins/questions-resources/package.json +++ b/plugins/questions-resources/package.json @@ -17,22 +17,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "prettier": "^3.6.2", "svelte-check": "^3.6.9", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/questions": "workspace:^0.7.0", diff --git a/plugins/questions-resources/src/components/AnswersItemEditor.svelte b/plugins/questions-resources/src/components/AnswersItemEditor.svelte index b68b0c3199..ddf40fbcc3 100644 --- a/plugins/questions-resources/src/components/AnswersItemEditor.svelte +++ b/plugins/questions-resources/src/components/AnswersItemEditor.svelte @@ -64,7 +64,7 @@ } } - async function submit (answerData: AnswerDataOf): Promise { + async function submit(answerData: AnswerDataOf): Promise { if (answer === null) { await createAnswer(answerClassRef, answerData) } else { diff --git a/plugins/questions-resources/src/components/LabelEditor.svelte b/plugins/questions-resources/src/components/LabelEditor.svelte index d7765f8eb7..0cc346d705 100644 --- a/plugins/questions-resources/src/components/LabelEditor.svelte +++ b/plugins/questions-resources/src/components/LabelEditor.svelte @@ -9,7 +9,7 @@ export let readonly = false let editBox: EditBox | undefined = undefined - export function focus (): void { + export function focus(): void { if (editBox) { editBox.focus() } diff --git a/plugins/questions-resources/src/components/MultipleChoiceAnswerDataEditor.svelte b/plugins/questions-resources/src/components/MultipleChoiceAnswerDataEditor.svelte index d6f20f0bc4..b4dc932163 100644 --- a/plugins/questions-resources/src/components/MultipleChoiceAnswerDataEditor.svelte +++ b/plugins/questions-resources/src/components/MultipleChoiceAnswerDataEditor.svelte @@ -34,7 +34,7 @@ export let submit: ((answerData: MultipleChoiceAnswerData) => Promise) | null = null export let showDiff: boolean = false - async function toggleIndex (index: number, on: boolean): Promise { + async function toggleIndex(index: number, on: boolean): Promise { if (submit === null) { return } diff --git a/plugins/questions-resources/src/components/MultipleChoiceQuestionDataEditor.svelte b/plugins/questions-resources/src/components/MultipleChoiceQuestionDataEditor.svelte index aa446d1ce4..4403bb62c8 100644 --- a/plugins/questions-resources/src/components/MultipleChoiceQuestionDataEditor.svelte +++ b/plugins/questions-resources/src/components/MultipleChoiceQuestionDataEditor.svelte @@ -37,7 +37,7 @@ let draft: string = '' - function onOptionLabelKeyDown (event: KeyboardEvent, index: number): void { + function onOptionLabelKeyDown(event: KeyboardEvent, index: number): void { if (submit === undefined) { return } @@ -61,7 +61,7 @@ } } - function onOptionLabelChange (index: number): void { + function onOptionLabelChange(index: number): void { if (submit === undefined) { return } @@ -73,7 +73,7 @@ } } - function appendOption (): void { + function appendOption(): void { if (submit === undefined) { return } @@ -85,7 +85,7 @@ }) } - function removeOptionAt (index: number): void { + function removeOptionAt(index: number): void { if (submit === undefined) { return } @@ -116,7 +116,7 @@ }) } - function toggleIndex (index: number, on: boolean): void { + function toggleIndex(index: number, on: boolean): void { if (submit === undefined || assessmentData === null) { return } @@ -135,7 +135,7 @@ let canDrag: boolean = false $: canDrag = submit !== undefined && questionData.options.length > 1 - function onDrop (event: OptionsListDropEvent): void { + function onDrop(event: OptionsListDropEvent): void { const { from, to } = event.detail if (submit === undefined || from === to) { @@ -159,7 +159,7 @@ } } - export function focus (): void { + export function focus(): void { if (submit !== undefined) { inputs[0].focus() } diff --git a/plugins/questions-resources/src/components/OptionsList.svelte b/plugins/questions-resources/src/components/OptionsList.svelte index 6e1c3dddd8..28075d85e5 100644 --- a/plugins/questions-resources/src/components/OptionsList.svelte +++ b/plugins/questions-resources/src/components/OptionsList.svelte @@ -32,7 +32,7 @@ drop: { from: number, to: number } }>() - function onDragStart (event: DragEvent, index: number): void { + function onDragStart(event: DragEvent, index: number): void { if (!canDrag || event.dataTransfer === null) { return } @@ -44,7 +44,7 @@ draggedIndex = index } - function onDragOver (event: DragEvent, index: number): void { + function onDragOver(event: DragEvent, index: number): void { if (!canDrag || event.dataTransfer === null) { return } @@ -54,7 +54,7 @@ draggedOverIndex = index } - function onDragLeave (event: DragEvent, index: number): void { + function onDragLeave(event: DragEvent, index: number): void { if (!canDrag || event.dataTransfer === null) { return } @@ -67,7 +67,7 @@ draggedOverIndex = undefined } - function onDragEnd (event: DragEvent): void { + function onDragEnd(event: DragEvent): void { if (!canDrag || event.dataTransfer === null) { return } diff --git a/plugins/questions-resources/src/components/OrderingAnswerDataEditor.svelte b/plugins/questions-resources/src/components/OrderingAnswerDataEditor.svelte index 70e2291ea6..b6db864036 100644 --- a/plugins/questions-resources/src/components/OrderingAnswerDataEditor.svelte +++ b/plugins/questions-resources/src/components/OrderingAnswerDataEditor.svelte @@ -59,7 +59,7 @@ let canDrag: boolean = false $: canDrag = submit !== null && answerData !== null && questionData.options.length > 1 - function onDrop (event: OptionsListDropEvent): void { + function onDrop(event: OptionsListDropEvent): void { if (submit === null) { return } diff --git a/plugins/questions-resources/src/components/OrderingQuestionDataEditor.svelte b/plugins/questions-resources/src/components/OrderingQuestionDataEditor.svelte index fff979bfc0..cf5db16ea6 100644 --- a/plugins/questions-resources/src/components/OrderingQuestionDataEditor.svelte +++ b/plugins/questions-resources/src/components/OrderingQuestionDataEditor.svelte @@ -44,7 +44,7 @@ let draft: string = '' - function onOptionLabelKeyDown (event: KeyboardEvent, index: number): void { + function onOptionLabelKeyDown(event: KeyboardEvent, index: number): void { if (submit === undefined) { return } @@ -68,7 +68,7 @@ } } - function onOptionLabelChange (index: number): void { + function onOptionLabelChange(index: number): void { if (submit === undefined) { return } @@ -80,7 +80,7 @@ } } - function appendOption (): void { + function appendOption(): void { if (submit === undefined) { return } @@ -97,7 +97,7 @@ }) } - function removeOptionAt (index: number): void { + function removeOptionAt(index: number): void { if (submit === undefined) { return } @@ -134,7 +134,7 @@ let positionDropdownItems: DropdownTextItem[] = [{ id: '1', label: '1' }] $: positionDropdownItems = questionData.options.map((_, i) => ({ id: String(i + 1), label: String(i + 1) })) - function changePosition (event: MouseEvent, index: number): void { + function changePosition(event: MouseEvent, index: number): void { if (submit === undefined || assessmentData === null) { return } @@ -176,7 +176,7 @@ let canDrag: boolean = false $: canDrag = submit !== undefined && questionData.options.length > 1 - function onDrop (event: OptionsListDropEvent): void { + function onDrop(event: OptionsListDropEvent): void { const { from, to } = event.detail if (submit === undefined || from === to) { return @@ -191,7 +191,7 @@ } } - export function focus (): void { + export function focus(): void { if (submit !== undefined) { inputs[0].focus() } diff --git a/plugins/questions-resources/src/components/QuestionsCollectionEditor.svelte b/plugins/questions-resources/src/components/QuestionsCollectionEditor.svelte index aa79a29738..db51d55053 100644 --- a/plugins/questions-resources/src/components/QuestionsCollectionEditor.svelte +++ b/plugins/questions-resources/src/components/QuestionsCollectionEditor.svelte @@ -58,7 +58,7 @@ } } - async function onClickAdd (e: MouseEvent, index: number | null): Promise { + async function onClickAdd(e: MouseEvent, index: number | null): Promise { if (readonly) { return } diff --git a/plugins/questions-resources/src/components/QuestionsItemEditor.svelte b/plugins/questions-resources/src/components/QuestionsItemEditor.svelte index 5d7d7205af..6572334d66 100644 --- a/plugins/questions-resources/src/components/QuestionsItemEditor.svelte +++ b/plugins/questions-resources/src/components/QuestionsItemEditor.svelte @@ -67,18 +67,18 @@ isSubmitting = false } - async function onTitleChange (): Promise { + async function onTitleChange(): Promise { if (readonly) { return } await submit({ title: draft.title }) } - async function showContextMenu (evt: MouseEvent): Promise { + async function showContextMenu(evt: MouseEvent): Promise { showMenu(evt, { object: draft, excludedActions: [view.action.Open] }) } - export function focus (): void { + export function focus(): void { void editorPromise.then(() => ed?.focus()) } diff --git a/plugins/questions-resources/src/components/SingleChoiceAnswerDataEditor.svelte b/plugins/questions-resources/src/components/SingleChoiceAnswerDataEditor.svelte index 8d2ff53142..6c3cc264a1 100644 --- a/plugins/questions-resources/src/components/SingleChoiceAnswerDataEditor.svelte +++ b/plugins/questions-resources/src/components/SingleChoiceAnswerDataEditor.svelte @@ -34,7 +34,7 @@ export let submit: ((answerData: SingleChoiceAnswerData) => Promise) | null = null export let showDiff: boolean = false - async function toggleIndex (selectedIndex: number): Promise { + async function toggleIndex(selectedIndex: number): Promise { if (submit === null) { return } diff --git a/plugins/questions-resources/src/components/SingleChoiceQuestionDataEditor.svelte b/plugins/questions-resources/src/components/SingleChoiceQuestionDataEditor.svelte index a127361b87..96bafe3c7b 100644 --- a/plugins/questions-resources/src/components/SingleChoiceQuestionDataEditor.svelte +++ b/plugins/questions-resources/src/components/SingleChoiceQuestionDataEditor.svelte @@ -37,7 +37,7 @@ let draft: string = '' - function onOptionLabelKeyDown (event: KeyboardEvent, index: number): void { + function onOptionLabelKeyDown(event: KeyboardEvent, index: number): void { if (submit === undefined) { return } @@ -61,7 +61,7 @@ } } - function onOptionLabelChange (index: number): void { + function onOptionLabelChange(index: number): void { if (submit === undefined) { return } @@ -73,7 +73,7 @@ } } - function appendOption (): void { + function appendOption(): void { if (submit === undefined) { return } @@ -85,7 +85,7 @@ }) } - function removeOptionAt (index: number): void { + function removeOptionAt(index: number): void { if (submit === undefined) { return } @@ -112,7 +112,7 @@ }) } - function toggleIndex (index: number): void { + function toggleIndex(index: number): void { if (submit === undefined || assessmentData === null) { return } @@ -123,7 +123,7 @@ let canDrag: boolean = false $: canDrag = submit !== undefined && questionData.options.length > 1 - function onDrop (event: OptionsListDropEvent): void { + function onDrop(event: OptionsListDropEvent): void { const { from, to } = event.detail if (submit === undefined || from === to) { return @@ -140,7 +140,7 @@ } } - export function focus (): void { + export function focus(): void { if (submit !== undefined) { inputs[0].focus() } diff --git a/plugins/questions-resources/src/functions/MultipleChoiceAssessmentAssess.ts b/plugins/questions-resources/src/functions/MultipleChoiceAssessmentAssess.ts index c5d51863b3..8d6b7b42a4 100644 --- a/plugins/questions-resources/src/functions/MultipleChoiceAssessmentAssess.ts +++ b/plugins/questions-resources/src/functions/MultipleChoiceAssessmentAssess.ts @@ -10,8 +10,8 @@ import type { /** @public */ export const MultipleChoiceAssessmentAssess: AnswerDataAssessFunction< -MultipleChoiceAssessment, -MultipleChoiceAssessmentAnswer + MultipleChoiceAssessment, + MultipleChoiceAssessmentAnswer > = async (answerData, assessmentData) => { return { score: diff --git a/plugins/questions-resources/src/functions/SingleChoiceAssessmentAssess.ts b/plugins/questions-resources/src/functions/SingleChoiceAssessmentAssess.ts index e36b754499..4db76db431 100644 --- a/plugins/questions-resources/src/functions/SingleChoiceAssessmentAssess.ts +++ b/plugins/questions-resources/src/functions/SingleChoiceAssessmentAssess.ts @@ -10,8 +10,8 @@ import type { /** @public */ export const SingleChoiceAssessmentAssess: AnswerDataAssessFunction< -SingleChoiceAssessment, -SingleChoiceAssessmentAnswer + SingleChoiceAssessment, + SingleChoiceAssessmentAnswer > = async (answerData, assessmentData) => { return { score: answerData.selectedIndex === assessmentData.correctIndex ? 100 : 0 diff --git a/plugins/questions-resources/src/plugin.ts b/plugins/questions-resources/src/plugin.ts index f8b7bf1984..e3e126ab32 100644 --- a/plugins/questions-resources/src/plugin.ts +++ b/plugins/questions-resources/src/plugin.ts @@ -51,20 +51,20 @@ export default mergeIds(questionsId, questions, { MultipleChoiceAssessmentDataEditor: '' as Resource>, MultipleChoiceAssessmentDataPresenter: '' as Resource>, MultipleChoiceAssessmentAnswerDataEditor: '' as Resource< - AnswerDataEditor + AnswerDataEditor >, MultipleChoiceAssessmentAnswerDataPresenter: '' as Resource< - AnswerDataPresenter + AnswerDataPresenter >, // MultipleChoiceQuestion MultipleChoiceQuestionDataEditor: '' as Resource>, MultipleChoiceQuestionDataPresenter: '' as Resource>, MultipleChoiceQuestionAnswerDataEditor: '' as Resource< - AnswerDataEditor + AnswerDataEditor >, MultipleChoiceQuestionAnswerDataPresenter: '' as Resource< - AnswerDataPresenter + AnswerDataPresenter >, // OrderingAssessment @@ -72,7 +72,7 @@ export default mergeIds(questionsId, questions, { OrderingAssessmentDataPresenter: '' as Resource>, OrderingAssessmentAnswerDataEditor: '' as Resource>, OrderingAssessmentAnswerDataPresenter: '' as Resource< - AnswerDataPresenter + AnswerDataPresenter >, // OrderingQuestion @@ -85,26 +85,26 @@ export default mergeIds(questionsId, questions, { SingleChoiceAssessmentDataEditor: '' as Resource>, SingleChoiceAssessmentDataPresenter: '' as Resource>, SingleChoiceAssessmentAnswerDataEditor: '' as Resource< - AnswerDataEditor + AnswerDataEditor >, SingleChoiceAssessmentAnswerDataPresenter: '' as Resource< - AnswerDataPresenter + AnswerDataPresenter >, // SingleChoiceQuestion SingleChoiceQuestionDataEditor: '' as Resource>, SingleChoiceQuestionDataPresenter: '' as Resource>, SingleChoiceQuestionAnswerDataEditor: '' as Resource< - AnswerDataEditor + AnswerDataEditor >, SingleChoiceQuestionAnswerDataPresenter: '' as Resource< - AnswerDataPresenter + AnswerDataPresenter > }, function: { // MultipleChoice MultipleChoiceAssessmentAssess: '' as Resource< - AnswerDataAssessFunction + AnswerDataAssessFunction >, MultipleChoiceAssessmentInit: '' as Resource>, MultipleChoiceQuestionInit: '' as Resource>, @@ -116,7 +116,7 @@ export default mergeIds(questionsId, questions, { // SingleChoice SingleChoiceAssessmentAssess: '' as Resource< - AnswerDataAssessFunction + AnswerDataAssessFunction >, SingleChoiceAssessmentInit: '' as Resource>, SingleChoiceQuestionInit: '' as Resource> diff --git a/plugins/questions-resources/src/utils/assessAnswer.ts b/plugins/questions-resources/src/utils/assessAnswer.ts index 8aa63f101a..455758ade2 100644 --- a/plugins/questions-resources/src/utils/assessAnswer.ts +++ b/plugins/questions-resources/src/utils/assessAnswer.ts @@ -12,11 +12,11 @@ export async function assessAnswer, A extends Answer { +> { if (!isAssessment(question)) { return undefined } diff --git a/plugins/questions-resources/src/utils/assessAnswers.ts b/plugins/questions-resources/src/utils/assessAnswers.ts index 7d6c1da02c..63f115fcfa 100644 --- a/plugins/questions-resources/src/utils/assessAnswers.ts +++ b/plugins/questions-resources/src/utils/assessAnswers.ts @@ -11,10 +11,10 @@ export async function assessAnswers ( questionsCollection: Array>, answersCollection: Array, unknown>> ): Promise<{ - assessmentsPassed: number - assessmentsTotal: number - score: Percentage - }> { + assessmentsPassed: number + assessmentsTotal: number + score: Percentage +}> { if (questionsCollection.length === 0) { return { assessmentsPassed: 0, diff --git a/plugins/questions-resources/src/utils/calculateAnswersToPass.ts b/plugins/questions-resources/src/utils/calculateAnswersToPass.ts index 10e0548ac5..eaeb20ae23 100644 --- a/plugins/questions-resources/src/utils/calculateAnswersToPass.ts +++ b/plugins/questions-resources/src/utils/calculateAnswersToPass.ts @@ -24,9 +24,9 @@ export function calculateAnswersToPass ( questionsCollection: Array>, passingScore: Percentage ): { - assessmentsTotal: number - answersNeeded: number - } { + assessmentsTotal: number + answersNeeded: number +} { const assessmentsTotal = questionsCollection.filter(isAssessment).length const answersNeeded = Math.ceil((passingScore * assessmentsTotal) / 100) return { diff --git a/plugins/questions/.eslintrc.js b/plugins/questions/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/questions/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/questions/eslint.config.mjs b/plugins/questions/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/questions/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/questions/package.json b/plugins/questions/package.json index a9be7bbe21..24ee7e3b33 100644 --- a/plugins/questions/package.json +++ b/plugins/questions/package.json @@ -21,19 +21,19 @@ "_phase:validate": "compile validate" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/plugins/questions/src/doc-types/index.ts b/plugins/questions/src/doc-types/index.ts index 75dd1160df..943b3fdcc5 100644 --- a/plugins/questions/src/doc-types/index.ts +++ b/plugins/questions/src/doc-types/index.ts @@ -2,8 +2,8 @@ // Copyright @ 2024 Hardcore Engineering Inc. // -export * from './base' -export * from './mixin' -export * from './questions/MultipleChoice' -export * from './questions/Ordering' -export * from './questions/SingleChoice' +export type * from './base' +export type * from './mixin' +export type * from './questions/MultipleChoice' +export type * from './questions/Ordering' +export type * from './questions/SingleChoice' diff --git a/plugins/questions/src/doc-types/mixin.ts b/plugins/questions/src/doc-types/mixin.ts index 7832423240..6a49fa9a54 100644 --- a/plugins/questions/src/doc-types/mixin.ts +++ b/plugins/questions/src/doc-types/mixin.ts @@ -27,7 +27,7 @@ export interface QuestionDataPresenterProps> { } export type QuestionDataPresenter> = ComponentType< -SvelteComponent> + SvelteComponent> > /** @public */ @@ -60,7 +60,7 @@ export interface AnswerDataEditorProps, A extends Answer /** @public */ export type AnswerDataEditor, A extends Answer> = ComponentType< -SvelteComponent> + SvelteComponent> > /** @public */ @@ -73,7 +73,7 @@ export interface AnswerDataPresenterProps, A extends Ans /** @public */ export type AnswerDataPresenter, A extends Answer> = ComponentType< -SvelteComponent> + SvelteComponent> > /** @public */ diff --git a/plugins/questions/src/index.ts b/plugins/questions/src/index.ts index 2553f55df0..f1ef959beb 100644 --- a/plugins/questions/src/index.ts +++ b/plugins/questions/src/index.ts @@ -38,7 +38,7 @@ import type { /** @public */ export const questionsId = 'questions' as Plugin -export * from './doc-types' +export type * from './doc-types' /** @public */ export default plugin(questionsId, { diff --git a/plugins/rating-assets/.eslintrc.js b/plugins/rating-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/rating-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/rating-assets/eslint.config.mjs b/plugins/rating-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/rating-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/rating-assets/package.json b/plugins/rating-assets/package.json index 01d0be2311..2d14bba677 100644 --- a/plugins/rating-assets/package.json +++ b/plugins/rating-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/rating-assets/src/lang.ts b/plugins/rating-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/rating-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/rating-resources/.eslintrc.js b/plugins/rating-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/rating-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/rating-resources/eslint.config.mjs b/plugins/rating-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/rating-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/rating-resources/package.json b/plugins/rating-resources/package.json index 4a59dbd806..ad5b8488ef 100644 --- a/plugins/rating-resources/package.json +++ b/plugins/rating-resources/package.json @@ -20,22 +20,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/rating-resources/src/components/RatingActivities.svelte b/plugins/rating-resources/src/components/RatingActivities.svelte index 4338ca9cbe..cf86c7b631 100644 --- a/plugins/rating-resources/src/components/RatingActivities.svelte +++ b/plugins/rating-resources/src/components/RatingActivities.svelte @@ -14,7 +14,7 @@ const monthMax: number = 500 // Color scale: 0 = #ebedf0, low = #c6e48b, mid = #7bc96f, high = #239a3b, max = #196127 - function getColor (val: number, max: number): string { + function getColor(val: number, max: number): string { max = Math.max(max, monthMax) const COLORS = [ 'transparent', @@ -40,7 +40,7 @@ return COLORS[idx] } - function getMax (year: number, rating?: PersonRating): number { + function getMax(year: number, rating?: PersonRating): number { const monthData = rating?.months?.filter((it) => Math.floor(it[0] / 100) === year) if (monthData === undefined) return monthMax return Math.max(...monthData.map((val) => (val[1] ?? 0) + (val[2] ?? 0) + (val[3] ?? 0))) diff --git a/plugins/rating-resources/src/components/RatingEditor.svelte b/plugins/rating-resources/src/components/RatingEditor.svelte index 4dd15d7586..227ede5f4c 100644 --- a/plugins/rating-resources/src/components/RatingEditor.svelte +++ b/plugins/rating-resources/src/components/RatingEditor.svelte @@ -45,16 +45,16 @@ _reactions = reactions } - async function addStarReaction (): Promise { + async function addStarReaction(): Promise { operating = true try { const r = !loading ? _reactions : await client.findAll(ratingPlugin.class.DocReaction, { - attachedTo: _id, - attachedToClass: _class, - reactionType: ReactionKind.Star - }) + attachedTo: _id, + attachedToClass: _class, + reactionType: ReactionKind.Star + }) const existing = r.filter((it) => it.reactionType === ReactionKind.Star && socialIds.has(it.modifiedBy)) if (existing.length > 0) { for (const e of existing) { @@ -75,7 +75,7 @@ } } - async function addEmojiReaction (event: MouseEvent): Promise { + async function addEmojiReaction(event: MouseEvent): Promise { showPopup(emojiPlugin.component.EmojiPopup, {}, event.target as HTMLElement, async (emoji) => { if (emoji?.text === undefined) return @@ -84,11 +84,11 @@ const r = !loading ? _reactions : await client.findAll(ratingPlugin.class.DocReaction, { - attachedTo: _id, - attachedToClass: _class, - reactionType: ReactionKind.Emoji, - text: emoji.text - }) + attachedTo: _id, + attachedToClass: _class, + reactionType: ReactionKind.Emoji, + text: emoji.text + }) const existing = r.filter( (it) => it.reactionType === ReactionKind.Emoji && it.emoji === emoji.text && socialIds.has(it.modifiedBy) @@ -111,7 +111,7 @@ }) } - async function existingReactionClick (reactions: DocReaction[]): Promise { + async function existingReactionClick(reactions: DocReaction[]): Promise { let removed = false for (const reaction of reactions) { if (account.fullSocialIds.some((it) => it._id === reaction.modifiedBy)) { diff --git a/plugins/rating-resources/src/components/RatingWidget.svelte b/plugins/rating-resources/src/components/RatingWidget.svelte index b0e52b5ac9..9641474ae7 100644 --- a/plugins/rating-resources/src/components/RatingWidget.svelte +++ b/plugins/rating-resources/src/components/RatingWidget.svelte @@ -22,7 +22,7 @@ { limit: 5000, sort: { modifiedOn: SortingOrder.Descending } } ) - function groupReactions (reactions: DocReaction[]): { + function groupReactions(reactions: DocReaction[]): { _class: Ref> objects: { _id: Ref diff --git a/plugins/rating/.eslintrc.js b/plugins/rating/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/rating/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/rating/eslint.config.mjs b/plugins/rating/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/rating/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/rating/package.json b/plugins/rating/package.json index c873eeb950..49c0f8c9ae 100644 --- a/plugins/rating/package.json +++ b/plugins/rating/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/recorder-assets/.eslintrc.js b/plugins/recorder-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/recorder-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/recorder-assets/eslint.config.mjs b/plugins/recorder-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/recorder-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/recorder-assets/package.json b/plugins/recorder-assets/package.json index 0c0461e626..7f81f10ddd 100644 --- a/plugins/recorder-assets/package.json +++ b/plugins/recorder-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/recorder-assets/src/lang.ts b/plugins/recorder-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/recorder-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/recorder-resources/.eslintrc.js b/plugins/recorder-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/recorder-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/recorder-resources/eslint.config.mjs b/plugins/recorder-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/recorder-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/recorder-resources/package.json b/plugins/recorder-resources/package.json index 4f883af351..0fd0e43199 100644 --- a/plugins/recorder-resources/package.json +++ b/plugins/recorder-resources/package.json @@ -17,26 +17,25 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/recorder-resources/src/components/Draggable.svelte b/plugins/recorder-resources/src/components/Draggable.svelte index 22c9254417..9594dc4b92 100644 --- a/plugins/recorder-resources/src/components/Draggable.svelte +++ b/plugins/recorder-resources/src/components/Draggable.svelte @@ -71,7 +71,7 @@ } }) - function handleDragStart (event: MouseEvent): void { + function handleDragStart(event: MouseEvent): void { dragStartX = event.clientX dragStartY = event.clientY dragOffsetX = event.clientX - posX @@ -81,7 +81,7 @@ window.addEventListener('mouseup', handleDragEnd) } - function handleDragEnd (): void { + function handleDragEnd(): void { window.removeEventListener('mousemove', handleDrag) window.removeEventListener('mouseup', handleDragEnd) @@ -93,7 +93,7 @@ dragging = false } - function handleDrag (event: MouseEvent): void { + function handleDrag(event: MouseEvent): void { if (!dragging) { if (Math.abs(event.clientX - dragStartX) < 5 && Math.abs(event.clientY - dragStartY) < 5) { return diff --git a/plugins/recorder-resources/src/components/RecorderExt.svelte b/plugins/recorder-resources/src/components/RecorderExt.svelte index db05c0cfc6..0abc3560c2 100644 --- a/plugins/recorder-resources/src/components/RecorderExt.svelte +++ b/plugins/recorder-resources/src/components/RecorderExt.svelte @@ -29,7 +29,7 @@ $: state = $recorderState.state $: elapsedTime = $recorderState.elapsedTime - function handleRecClick (): void { + function handleRecClick(): void { void record({}) } diff --git a/plugins/recorder-resources/src/components/RecordingPopup.svelte b/plugins/recorder-resources/src/components/RecordingPopup.svelte index cfae32d189..9f7b3d7c0b 100644 --- a/plugins/recorder-resources/src/components/RecordingPopup.svelte +++ b/plugins/recorder-resources/src/components/RecordingPopup.svelte @@ -96,7 +96,7 @@ video.srcObject = $canvasStream } - async function updateName (screenShareEnabled: boolean): Promise { + async function updateName(screenShareEnabled: boolean): Promise { name = (await formatRecordingName( screenShareEnabled ? plugin.string.ScreenRecordingName : plugin.string.CameraRecordingName, @@ -104,7 +104,7 @@ )) + '.mp4' } - async function handleCompleteRecording (): Promise { + async function handleCompleteRecording(): Promise { if (name.length === 0) return const { @@ -153,7 +153,7 @@ let messageBox: PopupResult | null = null - async function handleCancelRecording (): Promise { + async function handleCancelRecording(): Promise { if (canClosePopup()) { await cancelRecording() @@ -187,15 +187,15 @@ ) } - export function canClose (): boolean { + export function canClose(): boolean { return false } - function canClosePopup (): boolean { + function canClosePopup(): boolean { return state.state === 'idle' || state.state === 'ready' } - async function handleCamSetting (e: MouseEvent): Promise { + async function handleCamSetting(e: MouseEvent): Promise { const mediaDevices = await getMediaDevices(false, true) const devices = mediaDevices.devices.filter((d) => d.kind === 'videoinput') @@ -216,7 +216,7 @@ }) } - async function handleMicSetting (e: MouseEvent): Promise { + async function handleMicSetting(e: MouseEvent): Promise { const mediaDevices = await getMediaDevices(true, false) const devices = mediaDevices.devices.filter((d) => d.kind === 'audioinput') @@ -237,11 +237,11 @@ }) } - async function handleShareSettings (e: MouseEvent): Promise { + async function handleShareSettings(e: MouseEvent): Promise { showPopup(ShareSettingsPopup, {}, eventToHTMLElement(e)) } - function handleSettingsClick (e: MouseEvent): void { + function handleSettingsClick(e: MouseEvent): void { showPopup(SettingsPopup, { value: [] }, eventToHTMLElement(e)) } @@ -255,7 +255,7 @@ $: updateContainerSize(rootWidth, rootHeight, $canvasWidth, $canvasHeight) - function updateContainerSize (rootWidth: number, rootHeight: number, canvasWidth: number, canvasHeight: number): void { + function updateContainerSize(rootWidth: number, rootHeight: number, canvasWidth: number, canvasHeight: number): void { const scaleFactorX = rootWidth / canvasWidth const scaleFactorY = rootHeight / canvasHeight @@ -264,13 +264,13 @@ containerHeight = Math.floor(canvasHeight * containerScaleFactor) } - function handleContainerResize (element: Element): void { + function handleContainerResize(element: Element): void { const { width, height } = element.getBoundingClientRect() rootWidth = width rootHeight = height } - function handleKeyDown (e: KeyboardEvent): void { + function handleKeyDown(e: KeyboardEvent): void { if (state?.state === 'stopping') return if (messageBox !== null) return diff --git a/plugins/recorder/.eslintrc.js b/plugins/recorder/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/recorder/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/recorder/eslint.config.mjs b/plugins/recorder/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/recorder/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/recorder/package.json b/plugins/recorder/package.json index 09709df55a..81b97e3dd5 100644 --- a/plugins/recorder/package.json +++ b/plugins/recorder/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/recruit-assets/.eslintrc.js b/plugins/recruit-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/recruit-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/recruit-assets/eslint.config.mjs b/plugins/recruit-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/recruit-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/recruit-assets/package.json b/plugins/recruit-assets/package.json index 493215fa71..6e1d3c6c30 100644 --- a/plugins/recruit-assets/package.json +++ b/plugins/recruit-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/recruit-assets/src/lang.ts b/plugins/recruit-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/recruit-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/recruit-resources/.eslintrc.js b/plugins/recruit-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/recruit-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/recruit-resources/eslint.config.mjs b/plugins/recruit-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/recruit-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/recruit-resources/package.json b/plugins/recruit-resources/package.json index 128adb87b0..088c55e8f8 100644 --- a/plugins/recruit-resources/package.json +++ b/plugins/recruit-resources/package.json @@ -18,22 +18,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/recruit-resources/src/components/ApplicantNamePresenter.svelte b/plugins/recruit-resources/src/components/ApplicantNamePresenter.svelte index 0df157c867..3cf3d2ee9d 100644 --- a/plugins/recruit-resources/src/components/ApplicantNamePresenter.svelte +++ b/plugins/recruit-resources/src/components/ApplicantNamePresenter.svelte @@ -20,7 +20,7 @@ export let parentName: string | null | undefined = undefined export let spaceName: string | null | undefined = undefined - function getDisplayName (name: string | null | undefined): string { + function getDisplayName(name: string | null | undefined): string { if (name == null) { return '' } diff --git a/plugins/recruit-resources/src/components/CreateApplication.svelte b/plugins/recruit-resources/src/components/CreateApplication.svelte index 3127325582..7d95bc2844 100644 --- a/plugins/recruit-resources/src/components/CreateApplication.svelte +++ b/plugins/recruit-resources/src/components/CreateApplication.svelte @@ -110,11 +110,11 @@ const hierarchy = client.getHierarchy() fillDefaults(hierarchy, doc, recruit.class.Applicant) - export function canClose (): boolean { + export function canClose(): boolean { return (preserveCandidate || _candidate === undefined) && assignee === undefined } - async function createApplication (): Promise { + async function createApplication(): Promise { if (selectedState === undefined) { throw new Error(`Please select initial state:${_space}`) } @@ -180,14 +180,14 @@ }) } - async function invokeValidate ( + async function invokeValidate( action: Resource<(doc: T, client: Client) => Promise> ): Promise { const impl = await getResource(action) return await impl({ ...doc, space: _space }, client) } - async function validate ( + async function validate( doc: Applicant, space: Ref, _class: Ref>, diff --git a/plugins/recruit-resources/src/components/CreateCandidate.svelte b/plugins/recruit-resources/src/components/CreateCandidate.svelte index f29a47a20a..59ffc667da 100644 --- a/plugins/recruit-resources/src/components/CreateCandidate.svelte +++ b/plugins/recruit-resources/src/components/CreateCandidate.svelte @@ -86,7 +86,7 @@ recruit.mixin.Candidate ) - function getEmptyCandidate (id: Ref | undefined = undefined): CandidateDraft { + function getEmptyCandidate(id: Ref | undefined = undefined): CandidateDraft { return { _id: id ?? generateId(), firstName: '', @@ -110,7 +110,7 @@ }) ) - function objectChange (object: CandidateDraft, empty: any) { + function objectChange(object: CandidateDraft, empty: any) { if (shouldSaveDraft) { draftController.save(object, empty) } @@ -126,7 +126,7 @@ lastModified: number } - export function canClose (): boolean { + export function canClose(): boolean { return true } @@ -135,7 +135,7 @@ fillDefaults(hierarchy, empty, recruit.mixin.Candidate) fillDefaults(hierarchy, object, recruit.mixin.Candidate) - function resumeDraft () { + function resumeDraft() { return { uuid: object?.resumeUuid, name: object?.resumeName, @@ -189,7 +189,7 @@ ) }) - async function createCandidate (): Promise { + async function createCandidate(): Promise { const _id: Ref = generateId() const candidate: Data = { name: combineName(object.firstName ?? '', object.lastName ?? ''), @@ -301,11 +301,11 @@ resetObject() } - function isUndef (value?: string): boolean { + function isUndef(value?: string): boolean { return value === undefined || value === '' } - function addChannel (channels: AttachedData[], type: Ref, value?: string): void { + function addChannel(channels: AttachedData[], type: Ref, value?: string): void { if (value !== undefined) { const provider = channels.find((e) => e.provider === type) if (provider === undefined) { @@ -321,7 +321,7 @@ } } - async function recognize (file: File): Promise { + async function recognize(file: File): Promise { const token = getMetadata(presentation.metadata.Token) ?? '' try { @@ -460,7 +460,7 @@ } } - async function deleteResume (): Promise { + async function deleteResume(): Promise { if (object.resumeUuid) { try { await deleteFile(object.resumeUuid) @@ -470,7 +470,7 @@ } } - async function createAttachment (file: File) { + async function createAttachment(file: File) { loading = true try { const uploadFile = await getResource(attachment.helper.UploadFile) @@ -490,7 +490,7 @@ } } - function drop (event: DragEvent) { + function drop(event: DragEvent) { dragover = false const droppedFile = event.dataTransfer?.files[0] if (droppedFile !== undefined) { @@ -498,7 +498,7 @@ } } - function fileSelected () { + function fileSelected() { const file = inputFile.files?.[0] if (file !== undefined) { createAttachment(file) @@ -506,7 +506,7 @@ manager.setFocusPos(102) } - function addTagRef (tag: TagElement): void { + function addTagRef(tag: TagElement): void { object.skills = [ ...object.skills, { @@ -539,18 +539,18 @@ const manager = createFocusManager() - function resetObject (): void { + function resetObject(): void { object = getEmptyCandidate() fillDefaults(hierarchy, object, recruit.mixin.Candidate) } - export async function onOutsideClick (): Promise { + export async function onOutsideClick(): Promise { if (shouldSaveDraft) { draftController.save(object, empty) } } - async function showConfirmationDialog (): Promise { + async function showConfirmationDialog(): Promise { draftController.save(object, empty) const isFormEmpty = draft === undefined diff --git a/plugins/recruit-resources/src/components/CreateOrganization.svelte b/plugins/recruit-resources/src/components/CreateOrganization.svelte index 37d58515e5..2764d0a44e 100644 --- a/plugins/recruit-resources/src/components/CreateOrganization.svelte +++ b/plugins/recruit-resources/src/components/CreateOrganization.svelte @@ -23,11 +23,11 @@ let createOrg: CreateOrganization - export function canClose (): boolean { + export function canClose(): boolean { return createOrg.canClose() } - async function onCreate (org: Ref, client: TxOperations): Promise { + async function onCreate(org: Ref, client: TxOperations): Promise { await client.createMixin(org, contact.class.Organization, contact.space.Contacts, recruit.mixin.VacancyList, { vacancies: 0 }) diff --git a/plugins/recruit-resources/src/components/CreateVacancy.svelte b/plugins/recruit-resources/src/components/CreateVacancy.svelte index c9e3c46580..ccc954a909 100644 --- a/plugins/recruit-resources/src/components/CreateVacancy.svelte +++ b/plugins/recruit-resources/src/components/CreateVacancy.svelte @@ -78,7 +78,7 @@ $: setDefaultMembers(typeType) - function setDefaultMembers (typeType: ProjectType | undefined): void { + function setDefaultMembers(typeType: ProjectType | undefined): void { if (typeType === undefined) return if (membersChanged) return if (typeType.members === undefined || typeType.members.length === 0) return @@ -102,7 +102,7 @@ location: '', type: typeId as Ref } - export function canClose (): boolean { + export function canClose(): boolean { return name.trim() === '' && typeId !== undefined } @@ -154,7 +154,7 @@ rolesQuery.unsubscribe() } - async function saveIssue ( + async function saveIssue( id: Ref, space: Ref, template: IssueTemplateData, @@ -221,7 +221,7 @@ return resId } - async function createVacancy (): Promise { + async function createVacancy(): Promise { if (typeId === undefined || typeType === undefined) { throw Error(`Failed to find target project type: ${typeId}`) } @@ -295,7 +295,7 @@ let descriptionBox: AttachmentStyledBox - function handleTypeChange (evt: CustomEvent>): void { + function handleTypeChange(evt: CustomEvent>): void { if (typeId == null) { typeId = evt.detail return @@ -317,7 +317,7 @@ ) } - function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): void { + function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): void { if (rolesAssignment === undefined) { rolesAssignment = {} } diff --git a/plugins/recruit-resources/src/components/EditVacancy.svelte b/plugins/recruit-resources/src/components/EditVacancy.svelte index ca2d51a537..4ee7851280 100644 --- a/plugins/recruit-resources/src/components/EditVacancy.svelte +++ b/plugins/recruit-resources/src/components/EditVacancy.svelte @@ -54,7 +54,7 @@ const query = createQuery() // const clazz = client.getHierarchy().getClass(recruit.class.Vacancy) - function updateObject (_id: Ref): void { + function updateObject(_id: Ref): void { if (lastId !== _id) { const prev = lastId lastId = _id @@ -80,7 +80,7 @@ let descriptionBox: AttachmentStyleBoxCollabEditor $: descriptionKey = client.getHierarchy().getAttribute(recruit.class.Vacancy, 'fullDescription') let saved = false - async function save (): Promise { + async function save(): Promise { if (object === undefined) { return } diff --git a/plugins/recruit-resources/src/components/MoveApplication.svelte b/plugins/recruit-resources/src/components/MoveApplication.svelte index 2a64e4ef7a..eb3dae1f63 100644 --- a/plugins/recruit-resources/src/components/MoveApplication.svelte +++ b/plugins/recruit-resources/src/components/MoveApplication.svelte @@ -53,11 +53,11 @@ const dispatch = createEventDispatcher() const client = getClient() - export function canClose (): boolean { + export function canClose(): boolean { return true } - async function updateApplication () { + async function updateApplication() { if (selectedState === undefined) { throw new Error(`Please select initial state:${_space}`) } diff --git a/plugins/recruit-resources/src/components/NewCandidateHeader.svelte b/plugins/recruit-resources/src/components/NewCandidateHeader.svelte index 65baa2ed28..c9371cdb35 100644 --- a/plugins/recruit-resources/src/components/NewCandidateHeader.svelte +++ b/plugins/recruit-resources/src/components/NewCandidateHeader.svelte @@ -37,14 +37,14 @@ }) ) - async function newCandidate (): Promise { + async function newCandidate(): Promise { showPopup(CreateCandidate, { shouldSaveDraft: true }, 'top') Analytics.handleEvent(RecruitEvents.NewTalentButtonClicked) } let mainActionId: string | undefined = undefined let visibleActions: string[] = [] - function updateActions (draft: boolean): void { + function updateActions(draft: boolean): void { mainActionId = draft ? recruit.string.ResumeDraft : recruit.string.CreateTalent visibleActions = [mainActionId] } diff --git a/plugins/recruit-resources/src/components/OptimizeSkills.svelte b/plugins/recruit-resources/src/components/OptimizeSkills.svelte index b781a484bc..54a289c608 100644 --- a/plugins/recruit-resources/src/components/OptimizeSkills.svelte +++ b/plugins/recruit-resources/src/components/OptimizeSkills.svelte @@ -24,7 +24,7 @@ export let targetClass: Ref> - export function canClose (): boolean { + export function canClose(): boolean { return true } @@ -78,7 +78,7 @@ move: number } - function prepareTitle (title: string): string { + function prepareTitle(title: string): string { // Replace all non letter or digit characters with spaces let result = '' let last = '' @@ -107,14 +107,14 @@ return result.trim() } - function isLetter (c?: string): boolean { + function isLetter(c?: string): boolean { if (c == null) { return false } return c.toLowerCase() !== c.toUpperCase() } - function isDigit (c?: string): boolean { + function isDigit(c?: string): boolean { return ( c === '0' || c === '1' || @@ -129,7 +129,7 @@ ) } - function isLetterOrDigit (c?: string): boolean { + function isLetterOrDigit(c?: string): boolean { if (c == null) { return false } @@ -139,7 +139,7 @@ return c.toLowerCase() !== c.toUpperCase() } - function isForRemove (cc: string): boolean { + function isForRemove(cc: string): boolean { for (const c of cc) { if (isLetter(c)) { return false @@ -197,7 +197,7 @@ $: titles = Array.from(new Set(expertRefs.map((it) => prepareTitle(it.title.toLocaleLowerCase())))) // Will return a set of operations over tag elements - async function updateTagsList ( + async function updateTagsList( tagElements: TagElement[], expertRefs: Pick[] ): Promise { @@ -425,7 +425,7 @@ let doProcessing = false - function doAnalyse (): void { + function doAnalyse(): void { doProcessing = true if (elements.length > 0 && expertRefs.length > 0) { setTimeout(() => { @@ -454,7 +454,7 @@ let processed: number = 0 - async function applyPlan (): Promise { + async function applyPlan(): Promise { processed = 0 const updateClasses = new Set>>() const client = getClient() @@ -549,7 +549,7 @@ console.log('Apply:done') processed = 0 } - function toColor (el: TagUpdatePlan['elements'][0]): string | undefined { + function toColor(el: TagUpdatePlan['elements'][0]): string | undefined { if (el.total === -1) { return 'blue' } @@ -563,7 +563,7 @@ return undefined } - function exportCSV (name: string, data: string): void { + function exportCSV(name: string, data: string): void { const filename = name + new Date().toLocaleDateString() + '.csv' const link = document.createElement('a') link.style.display = 'none' @@ -575,7 +575,7 @@ document.body.removeChild(link) } - function exportExpertSkills (): string { + function exportExpertSkills(): string { // Construct csv const csv: string[] = [] csv.push('title;enabled;references') @@ -589,7 +589,7 @@ return csv.join('\n') } - function exportPlan (): string { + function exportPlan(): string { // Construct csv const csv: string[] = [] csv.push('number; title;total; new refs; new title;to delete;will add tags ') diff --git a/plugins/recruit-resources/src/components/Organizations.svelte b/plugins/recruit-resources/src/components/Organizations.svelte index 2301adc12f..c94fe0e2ce 100644 --- a/plugins/recruit-resources/src/components/Organizations.svelte +++ b/plugins/recruit-resources/src/components/Organizations.svelte @@ -105,7 +105,7 @@ applications = _applications } - function showCreateDialog () { + function showCreateDialog() { showPopup(CreateOrganization, {}, 'top') } const applicationSorting = (a: Doc, b: Doc) => @@ -173,7 +173,7 @@ let preference: ViewletPreference | undefined let viewOptions: ViewOptions | undefined - function createConfig ( + function createConfig( descr: Viewlet | undefined, preference: ViewletPreference | undefined, replacedKeys: Map diff --git a/plugins/recruit-resources/src/components/SkillsView.svelte b/plugins/recruit-resources/src/components/SkillsView.svelte index e7d410c88e..63b232c45f 100644 --- a/plugins/recruit-resources/src/components/SkillsView.svelte +++ b/plugins/recruit-resources/src/components/SkillsView.svelte @@ -9,7 +9,7 @@ import OptimizeSkills from './OptimizeSkills.svelte' import { selectedTagElements } from '@hcengineering/tags-resources' - function setFilterTag (tag: TagElement) { + function setFilterTag(tag: TagElement) { const client = getClient() const hierarchy = client.getHierarchy() const attribute = hierarchy.getAttribute(recruit.mixin.Candidate, 'skills') @@ -24,7 +24,7 @@ } as unknown as Filter setFilters([filter]) } - async function onTag (tag: TagElement): Promise { + async function onTag(tag: TagElement): Promise { selectedTagElements.set([tag._id]) const loc = getCurrentResolvedLocation() loc.path[2] = 'recruit' diff --git a/plugins/recruit-resources/src/components/Vacancies.svelte b/plugins/recruit-resources/src/components/Vacancies.svelte index 30429005b6..9549d1cff9 100644 --- a/plugins/recruit-resources/src/components/Vacancies.svelte +++ b/plugins/recruit-resources/src/components/Vacancies.svelte @@ -78,7 +78,7 @@ } ) - function showCreateDialog () { + function showCreateDialog() { showPopup(CreateVacancy, {}, 'top') } const applicationSorting = (a: Doc, b: Doc) => @@ -118,7 +118,7 @@ let preference: ViewletPreference | undefined let viewOptions: ViewOptions | undefined - function createConfig ( + function createConfig( descr: Viewlet, preference: ViewletPreference | undefined, applications: Map, ApplicationInfo>, diff --git a/plugins/recruit-resources/src/components/VacancyCard.svelte b/plugins/recruit-resources/src/components/VacancyCard.svelte index 18153a8170..0c540e14ee 100644 --- a/plugins/recruit-resources/src/components/VacancyCard.svelte +++ b/plugins/recruit-resources/src/components/VacancyCard.svelte @@ -33,7 +33,7 @@ $: getOrganization(vacancy, vacancy?.company) const client = getClient() - async function getOrganization ( + async function getOrganization( vacancy: WithLookup | undefined, _id: Ref | undefined ): Promise { diff --git a/plugins/recruit-resources/src/components/VacancyCountPresenter.svelte b/plugins/recruit-resources/src/components/VacancyCountPresenter.svelte index fcc4c4d8e1..8383042e9e 100644 --- a/plugins/recruit-resources/src/components/VacancyCountPresenter.svelte +++ b/plugins/recruit-resources/src/components/VacancyCountPresenter.svelte @@ -22,7 +22,7 @@ export let value: Vacancy export let applications: Map, { count: number, modifiedOn: number }> | undefined - function click () { + function click() { closeTooltip() const loc = getCurrentResolvedLocation() loc.fragment = undefined diff --git a/plugins/recruit-resources/src/components/VacancyItemPresenter.svelte b/plugins/recruit-resources/src/components/VacancyItemPresenter.svelte index ad08b49cda..4570bfecf0 100644 --- a/plugins/recruit-resources/src/components/VacancyItemPresenter.svelte +++ b/plugins/recruit-resources/src/components/VacancyItemPresenter.svelte @@ -24,7 +24,7 @@ export let inline: boolean = false export let action: ((item: Ref) => void) | undefined = undefined - function editVacancy (): void { + function editVacancy(): void { openDoc(getClient().getHierarchy(), value) } diff --git a/plugins/recruit-resources/src/components/VacancyTemplateEditor.svelte b/plugins/recruit-resources/src/components/VacancyTemplateEditor.svelte index 55c7de498d..a5bbf9f86a 100644 --- a/plugins/recruit-resources/src/components/VacancyTemplateEditor.svelte +++ b/plugins/recruit-resources/src/components/VacancyTemplateEditor.svelte @@ -29,7 +29,7 @@ const hierarchy = client.getHierarchy() const customKeys = getFiltredKeys(hierarchy, type._class, []).filter((key) => key.attr.isCustom) - async function onDescriptionChange (value: string) { + async function onDescriptionChange(value: string) { if (disabled) { return } diff --git a/plugins/recruit-resources/src/components/organizations/VacancyListCountPresenter.svelte b/plugins/recruit-resources/src/components/organizations/VacancyListCountPresenter.svelte index d38b50eb72..0377e78c73 100644 --- a/plugins/recruit-resources/src/components/organizations/VacancyListCountPresenter.svelte +++ b/plugins/recruit-resources/src/components/organizations/VacancyListCountPresenter.svelte @@ -21,8 +21,8 @@ export let value: VacancyList export let values: - | Map, { count: number, modifiedOn: number, vacancies: Ref[] }> - | undefined + | Map, { count: number, modifiedOn: number, vacancies: Ref[] }> + | undefined export let resultQuery: DocumentQuery export let label: IntlString diff --git a/plugins/recruit-resources/src/components/review/CreateOpinion.svelte b/plugins/recruit-resources/src/components/review/CreateOpinion.svelte index f8e3f335d4..3cc7fa1266 100644 --- a/plugins/recruit-resources/src/components/review/CreateOpinion.svelte +++ b/plugins/recruit-resources/src/components/review/CreateOpinion.svelte @@ -47,11 +47,11 @@ const dispatch = createEventDispatcher() const client = getClient() - export function canClose (): boolean { + export function canClose(): boolean { return review === undefined && assignee === undefined } - async function createOpinion () { + async function createOpinion() { const sequence = await client.findOne(core.class.Sequence, { attachedTo: recruit.class.Review }) if (sequence === undefined) { throw new Error('sequence object not found') diff --git a/plugins/recruit-resources/src/components/review/CreateReview.svelte b/plugins/recruit-resources/src/components/review/CreateReview.svelte index e6a6fb54af..64f7d2be44 100644 --- a/plugins/recruit-resources/src/components/review/CreateReview.svelte +++ b/plugins/recruit-resources/src/components/review/CreateReview.svelte @@ -82,11 +82,11 @@ const client = getClient() const hierarchy = client.getHierarchy() - export function canClose (): boolean { + export function canClose(): boolean { return (preserveCandidate || candidate === undefined) && title.length === 0 } - async function createReview () { + async function createReview() { const sequence = await client.findOne(core.class.Sequence, { attachedTo: recruit.class.Review }) if (sequence === undefined) { throw new Error('sequence object not found') @@ -135,14 +135,14 @@ Analytics.handleEvent(RecruitEvents.ReviewCreated, { id: ref }) } - async function invokeValidate ( + async function invokeValidate( action: Resource<(doc: T, client: Client) => Promise> ): Promise { const impl = await getResource(action) return await impl(doc, client) } - async function validate (doc: Review, _class: Ref>): Promise { + async function validate(doc: Review, _class: Ref>): Promise { const clazz = hierarchy.getClass(_class) const validatorMixin = hierarchy.as(clazz, view.mixin.ObjectValidator) if (validatorMixin?.validator != null) { diff --git a/plugins/recruit-resources/src/components/review/EditOpinion.svelte b/plugins/recruit-resources/src/components/review/EditOpinion.svelte index f9c5f20397..355cbec4e8 100644 --- a/plugins/recruit-resources/src/components/review/EditOpinion.svelte +++ b/plugins/recruit-resources/src/components/review/EditOpinion.svelte @@ -37,11 +37,11 @@ const dispatch = createEventDispatcher() const client = getClient() - export function canClose (): boolean { + export function canClose(): boolean { return true } - async function editOpinion () { + async function editOpinion() { const ops: DocumentUpdate = {} if (item.value !== value) { ops.value = value diff --git a/plugins/recruit-resources/src/components/review/EditReview.svelte b/plugins/recruit-resources/src/components/review/EditReview.svelte index 16bec8be71..a848ea941d 100644 --- a/plugins/recruit-resources/src/components/review/EditReview.svelte +++ b/plugins/recruit-resources/src/components/review/EditReview.svelte @@ -45,7 +45,7 @@ let candidate: Contact | undefined = undefined - async function updateSelected (object: Review) { + async function updateSelected(object: Review) { candidate = object?.attachedTo !== undefined ? await client.findOne(object.attachedToClass, { _id: object.attachedTo }) diff --git a/plugins/recruit-resources/src/components/review/OpinionPresenter.svelte b/plugins/recruit-resources/src/components/review/OpinionPresenter.svelte index 3899496d9c..b0f9d9c78a 100644 --- a/plugins/recruit-resources/src/components/review/OpinionPresenter.svelte +++ b/plugins/recruit-resources/src/components/review/OpinionPresenter.svelte @@ -22,7 +22,7 @@ export let value: Opinion - function show () { + function show() { closeTooltip() showPopup(EditOpinion, { item: value }, element) } diff --git a/plugins/recruit/.eslintrc.js b/plugins/recruit/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/recruit/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/recruit/eslint.config.mjs b/plugins/recruit/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/recruit/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/recruit/package.json b/plugins/recruit/package.json index eaf1384f27..71eaf653fd 100644 --- a/plugins/recruit/package.json +++ b/plugins/recruit/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/recruit/src/index.ts b/plugins/recruit/src/index.ts index 8bcd3607b8..08dd8fb861 100644 --- a/plugins/recruit/src/index.ts +++ b/plugins/recruit/src/index.ts @@ -21,7 +21,7 @@ import { AnyComponent, Location, ResolvedLocation } from '@hcengineering/ui' import type { Applicant, ApplicantMatch, Candidate, Opinion, Review, Vacancy, VacancyList } from './types' import { Action } from '@hcengineering/view' -export * from './types' +export type * from './types' export * from './analytics' /** diff --git a/plugins/request-assets/.eslintrc.js b/plugins/request-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/request-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/request-assets/eslint.config.mjs b/plugins/request-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/request-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/request-assets/package.json b/plugins/request-assets/package.json index 747dff9578..e893d15bff 100644 --- a/plugins/request-assets/package.json +++ b/plugins/request-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/request-assets/src/lang.ts b/plugins/request-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/request-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/request-resources/.eslintrc.js b/plugins/request-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/request-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/request-resources/eslint.config.mjs b/plugins/request-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/request-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/request-resources/package.json b/plugins/request-resources/package.json index 1e6863ccf0..d33e7e0014 100644 --- a/plugins/request-resources/package.json +++ b/plugins/request-resources/package.json @@ -18,22 +18,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/request-resources/src/components/RequestActions.svelte b/plugins/request-resources/src/components/RequestActions.svelte index 0f68e281de..ba2ae52b56 100644 --- a/plugins/request-resources/src/components/RequestActions.svelte +++ b/plugins/request-resources/src/components/RequestActions.svelte @@ -37,7 +37,7 @@ const approvable = value.requested.filter((a) => a === myPerson).length > value.approved.filter((a) => a === myPerson).length - async function approve () { + async function approve() { await saveComment() await client.update(value, { $push: { @@ -48,7 +48,7 @@ $: disabled = commentIsEmpty(message, attachments) - async function reject () { + async function reject() { await saveComment() await client.update(value, { rejected: myPerson, @@ -59,12 +59,12 @@ let message: Markup = EmptyMarkup let attachments: number | undefined = 0 - async function onUpdate (event: CustomEvent>) { + async function onUpdate(event: CustomEvent>) { message = event.detail.message attachments = event.detail.attachments } - async function saveComment (): Promise { + async function saveComment(): Promise { const _id = await client.addCollection( chunter.class.ChatMessage, value.space, @@ -83,7 +83,7 @@ loading = false } - async function comment (): Promise { + async function comment(): Promise { await client.addCollection(chunter.class.ChatMessage, value.space, value._id, value._class, 'comments', { message, attachments @@ -92,7 +92,7 @@ loading = false } - function commentIsEmpty (message: string, attachments: number | undefined): boolean { + function commentIsEmpty(message: string, attachments: number | undefined): boolean { return isEmptyMarkup(message) && !((attachments ?? 0) > 0) } @@ -122,7 +122,7 @@ ] let loading = false - async function cancel () { + async function cancel() { await client.update(value, { status: RequestStatus.Cancelled }) diff --git a/plugins/request-resources/src/components/RequestDetail.svelte b/plugins/request-resources/src/components/RequestDetail.svelte index 20cf89fbb9..1538803148 100644 --- a/plugins/request-resources/src/components/RequestDetail.svelte +++ b/plugins/request-resources/src/components/RequestDetail.svelte @@ -47,7 +47,7 @@ comment?: RequestDecisionComment } - function convert (value: Request, comments: Map | undefined, RequestDecisionComment>): RequestDecision[] { + function convert(value: Request, comments: Map | undefined, RequestDecisionComment>): RequestDecision[] { const res: RequestDecision[] = [] for (const emp of value.requested) { const decision = value.rejected === emp ? false : value.approved.includes(emp) ? true : undefined diff --git a/plugins/request-resources/src/components/RequestStatusPresenter.svelte b/plugins/request-resources/src/components/RequestStatusPresenter.svelte index da68e1eaa1..eab1253087 100644 --- a/plugins/request-resources/src/components/RequestStatusPresenter.svelte +++ b/plugins/request-resources/src/components/RequestStatusPresenter.svelte @@ -20,7 +20,7 @@ export let value: RequestStatus - function getBooleanLabel (value: RequestStatus): IntlString { + function getBooleanLabel(value: RequestStatus): IntlString { if (value === RequestStatus.Completed) return request.string.Completed if (value === RequestStatus.Rejected) return request.string.Rejected return request.string.Cancelled diff --git a/plugins/request/.eslintrc.js b/plugins/request/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/request/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/request/eslint.config.mjs b/plugins/request/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/request/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/request/package.json b/plugins/request/package.json index 86c8aa6957..7de692765f 100644 --- a/plugins/request/package.json +++ b/plugins/request/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/chunter": "workspace:^0.7.0", diff --git a/plugins/setting-assets/.eslintrc.js b/plugins/setting-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/setting-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/setting-assets/eslint.config.mjs b/plugins/setting-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/setting-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/setting-assets/package.json b/plugins/setting-assets/package.json index c95547f2b4..c476ac545b 100644 --- a/plugins/setting-assets/package.json +++ b/plugins/setting-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/setting-assets/src/lang.ts b/plugins/setting-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/setting-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/setting-resources/.eslintrc.js b/plugins/setting-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/setting-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/setting-resources/eslint.config.mjs b/plugins/setting-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/setting-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/setting-resources/package.json b/plugins/setting-resources/package.json index 816a3fccc9..7d2c4f77e6 100644 --- a/plugins/setting-resources/package.json +++ b/plugins/setting-resources/package.json @@ -22,23 +22,22 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1", - "@types/qrcode": "^1.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "@types/qrcode": "^1.5.5", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/setting-resources/src/components/AnonymousGuestSpaceInput.svelte b/plugins/setting-resources/src/components/AnonymousGuestSpaceInput.svelte index b04153a91a..889994015d 100644 --- a/plugins/setting-resources/src/components/AnonymousGuestSpaceInput.svelte +++ b/plugins/setting-resources/src/components/AnonymousGuestSpaceInput.svelte @@ -31,7 +31,7 @@ let persistedSelectedKeys: string[] = [] let docById: Map = new Map() - async function loadSpaces (): Promise { + async function loadSpaces(): Promise { if (group.spaceClass === undefined) { dropdownItems = [] selectedKeys = [] @@ -63,7 +63,7 @@ } } - async function handleSelected (e: CustomEvent): Promise { + async function handleSelected(e: CustomEvent): Promise { const nextKeys = new Set(e.detail) const prevKeys = new Set(persistedSelectedKeys) const toEnable = [...nextKeys].filter((k) => !prevKeys.has(k)) diff --git a/plugins/setting-resources/src/components/ApiDocsSection.svelte b/plugins/setting-resources/src/components/ApiDocsSection.svelte index 09b958c9d3..757d7d1911 100644 --- a/plugins/setting-resources/src/components/ApiDocsSection.svelte +++ b/plugins/setting-resources/src/components/ApiDocsSection.svelte @@ -35,7 +35,7 @@ (transactorEndpoint.endsWith('/') ? transactorEndpoint.slice(0, -1) : transactorEndpoint) + '/api/v1' $: curlExample = `curl -H "Authorization: Bearer YOUR_TOKEN" \\\n "${baseApiUrl}/find-all/WORKSPACE_ID?class=tracker:class:Project"` - async function copySnippet (text: string): Promise { + async function copySnippet(text: string): Promise { await copyTextToClipboard(text) } diff --git a/plugins/setting-resources/src/components/ApiTokenCreatePopup.svelte b/plugins/setting-resources/src/components/ApiTokenCreatePopup.svelte index c6ab441250..175b526d26 100644 --- a/plugins/setting-resources/src/components/ApiTokenCreatePopup.svelte +++ b/plugins/setting-resources/src/components/ApiTokenCreatePopup.svelte @@ -58,7 +58,7 @@ copied = false } - async function loadWorkspaces (): Promise { + async function loadWorkspaces(): Promise { try { const workspaces = await getAccountClient().getUserWorkspaces() wsItems = workspaces.map((w) => ({ _id: w.uuid, label: w.name ?? w.url })) @@ -71,7 +71,7 @@ } } - async function create (): Promise { + async function create(): Promise { if (selectedWs === undefined) return loading = true error = undefined @@ -90,7 +90,7 @@ } } - async function copyToken (): Promise { + async function copyToken(): Promise { if (createdToken === undefined) return if (!window.isSecureContext) { // No clipboard API outside a secure context. The token stays selectable above. diff --git a/plugins/setting-resources/src/components/ApiTokens.svelte b/plugins/setting-resources/src/components/ApiTokens.svelte index 830d915753..794a9e1fe0 100644 --- a/plugins/setting-resources/src/components/ApiTokens.svelte +++ b/plugins/setting-resources/src/components/ApiTokens.svelte @@ -36,7 +36,7 @@ expired: setting.string.ApiTokenStatusExpired } as const - function loadTokens (): void { + function loadTokens(): void { loading = true loadError = false getAccountClient() @@ -53,7 +53,7 @@ }) } - function create (): void { + function create(): void { showPopup(ApiTokenCreatePopup, {}, 'top', (res) => { if (res === true) { loadTokens() @@ -61,7 +61,7 @@ }) } - function revoke (token: ApiTokenInfo): void { + function revoke(token: ApiTokenInfo): void { showPopup(MessageBox, { label: setting.string.ApiTokenRevoke, message: setting.string.ApiTokenRevokeConfirm, @@ -79,7 +79,7 @@ }) } - function formatDate (ts: number): string { + function formatDate(ts: number): string { return new Date(ts).toLocaleDateString($themeStore.language ?? 'en', { month: 'short', day: 'numeric', @@ -87,7 +87,7 @@ }) } - function getStatus (token: ApiTokenInfo): 'active' | 'expiring' | 'revoked' | 'expired' { + function getStatus(token: ApiTokenInfo): 'active' | 'expiring' | 'revoked' | 'expired' { if (token.revoked) return 'revoked' const now = Date.now() if (token.expiresOn < now) return 'expired' diff --git a/plugins/setting-resources/src/components/AssociationEditor.svelte b/plugins/setting-resources/src/components/AssociationEditor.svelte index 473b890232..dcf8b660c4 100644 --- a/plugins/setting-resources/src/components/AssociationEditor.svelte +++ b/plugins/setting-resources/src/components/AssociationEditor.svelte @@ -49,7 +49,7 @@ .map((p) => p.attachTo) ) - function filterClasses ( + function filterClasses( descendants: Set>>, viewlets: Set>>, exclude: Ref>[] @@ -102,7 +102,7 @@ $: classA = isEmptyClass(classARef) ? undefined : hierarchy.getClass(classARef as Ref>) $: classB = isEmptyClass(classBRef) ? undefined : hierarchy.getClass(classBRef as Ref>) - function isEmptyClass (ref: Ref> | undefined): boolean { + function isEmptyClass(ref: Ref> | undefined): boolean { return ref === undefined || ref !== '' } @@ -110,7 +110,7 @@ $: fill(association) - function fill (association: Association | Data): void { + function fill(association: Association | Data): void { classBRef = !isEmptyClass(association.classB) ? association.classB : undefined classARef = !isEmptyClass(association.classA) ? association.classA : undefined nameA = association.nameA @@ -118,13 +118,13 @@ automationOnly = association.automationOnly ?? false } - function isAssociation (data: Data | Association): data is Association { + function isAssociation(data: Data | Association): data is Association { return (data as Association)._id !== undefined } const dispatch = createEventDispatcher() - async function save (): Promise { + async function save(): Promise { if (classBRef === undefined || classARef === undefined) { return } diff --git a/plugins/setting-resources/src/components/AvailableSpacesInput.svelte b/plugins/setting-resources/src/components/AvailableSpacesInput.svelte index 06cf1418b4..8e869a5a34 100644 --- a/plugins/setting-resources/src/components/AvailableSpacesInput.svelte +++ b/plugins/setting-resources/src/components/AvailableSpacesInput.svelte @@ -36,11 +36,11 @@ let persistedSelectedKeys: string[] = [] let docById: Map = new Map() - function normalizeAutoJoinForRoles (roles: AccountRole[]): AccountRole[] | undefined { + function normalizeAutoJoinForRoles(roles: AccountRole[]): AccountRole[] | undefined { return roles.length > 0 ? [...roles] : undefined } - async function loadSpaces (): Promise { + async function loadSpaces(): Promise { if (group.spaceClass === undefined) { dropdownItems = [] selectedKeys = [] @@ -72,7 +72,7 @@ } } - async function handleSelected (e: CustomEvent): Promise { + async function handleSelected(e: CustomEvent): Promise { const nextKeys = new Set(e.detail) const prevKeys = new Set(persistedSelectedKeys) const toEnable = [...nextKeys].filter((k) => !prevKeys.has(k)) diff --git a/plugins/setting-resources/src/components/Backup.svelte b/plugins/setting-resources/src/components/Backup.svelte index 5ee991314b..1ba4a81e0c 100644 --- a/plugins/setting-resources/src/components/Backup.svelte +++ b/plugins/setting-resources/src/components/Backup.svelte @@ -41,22 +41,22 @@ const workspaceId = workspaceDataId ?? workspaceUuid let backupInfo: - | { - files: { name: string, size: number }[] - extraBlobs: { name: string, size: number, contentType: string }[] - extraBlobsTotal?: number - error?: string - info?: BackupInfo - } - | undefined + | { + files: { name: string, size: number }[] + extraBlobs: { name: string, size: number, contentType: string }[] + extraBlobsTotal?: number + error?: string + info?: BackupInfo + } + | undefined $: fileSizes = new Map(backupInfo?.files?.map((it) => [it.name, it.size ?? 0])) - function formatDate (timestamp: number): string { + function formatDate(timestamp: number): string { return new Date(timestamp).toLocaleString() } - function getSize (size: number): string { + function getSize(size: number): string { const mbSize = size / (1024 * 1024) if (size < 1024) { @@ -69,7 +69,7 @@ return `${Math.round(mbSize * 100) / 100}Mb` } - function getSnapshotSummary (snapshot: BackupSnapshot): string { + function getSnapshotSummary(snapshot: BackupSnapshot): string { let size = 0 Object.values(snapshot.domains).forEach((domain) => { @@ -80,7 +80,7 @@ return getSize(size) } - function getBackupSize (files: { name: string, size: number }[]): string { + function getBackupSize(files: { name: string, size: number }[]): string { let size = 0 files.forEach((file) => { @@ -90,7 +90,7 @@ return getSize(size) } - async function updateBackupInfo (): Promise { + async function updateBackupInfo(): Promise { if (owner && backupUrl !== '') { try { const response = await fetch(`${backupUrl}/${workspaceId}/index.json`, { @@ -111,7 +111,7 @@ void updateBackupInfo() }) - function formatAgoHours (timestamp: number): string { + function formatAgoHours(timestamp: number): string { const date = new Date(timestamp) const now = new Date() const diffMs = now.getTime() - date.getTime() @@ -127,11 +127,11 @@ return '' } - function getBackupFileUrl (filename: string): string { + function getBackupFileUrl(filename: string): string { return `${backupUrl}/${workspaceId}/${filename}` } - async function doDownload (downloadUrl: string, filename?: string): Promise { + async function doDownload(downloadUrl: string, filename?: string): Promise { const a = document.createElement('a') try { const response = await fetch(downloadUrl, { @@ -160,11 +160,11 @@ } } - async function downloadFile (filename: string): Promise { + async function downloadFile(filename: string): Promise { const url = getBackupFileUrl(filename) await doDownload(url, filename) } - async function downloadBlobFile (filename: string): Promise { + async function downloadBlobFile(filename: string): Promise { const url = getFileUrl(filename) await doDownload(url, filename) } @@ -176,7 +176,7 @@ let scriptCopied = false let tokenCopied = false - function copyToken (): void { + function copyToken(): void { void copyTextToClipboard(token).then(() => { tokenCopied = true setTimeout(() => { @@ -185,12 +185,12 @@ }) } - function backupArchiveName (): string { + function backupArchiveName(): string { const date = new Date().toISOString().slice(0, 10) return `huly-backup-${workspaceId}-${date}.zip` } - async function downloadFullBackup (): Promise { + async function downloadFullBackup(): Promise { if (downloading) { return } @@ -233,7 +233,7 @@ } } - function copyBackupScript (): void { + function copyBackupScript(): void { const files = collectBackupFileNames(backupInfo) const script = generateBackupScript({ baseUrl: downloadBase, diff --git a/plugins/setting-resources/src/components/ClassAttributeRow.svelte b/plugins/setting-resources/src/components/ClassAttributeRow.svelte index 0a13a808ee..d958e4c707 100644 --- a/plugins/setting-resources/src/components/ClassAttributeRow.svelte +++ b/plugins/setting-resources/src/components/ClassAttributeRow.svelte @@ -26,21 +26,21 @@ export let hovered: boolean = false export let attributeMapper: - | { - component: AnySvelteComponent - label: IntlString - props: Record - } - | undefined = undefined + | { + component: AnySvelteComponent + label: IntlString + props: Record + } + | undefined = undefined const client = getClient() - async function getEnumName (type: Type): Promise { + async function getEnumName(type: Type): Promise { const ref = (type as EnumOf).of const res = await client.findOne(core.class.Enum, { _id: ref }) return res?.name } - function getArrayName (type: Type): IntlString | undefined { + function getArrayName(type: Type): IntlString | undefined { const ref = (type as ArrOf).of if (client.getHierarchy().hasClass((ref as RefTo).to)) { const res = client.getHierarchy().getClass((ref as RefTo).to) diff --git a/plugins/setting-resources/src/components/ClassAttributes.svelte b/plugins/setting-resources/src/components/ClassAttributes.svelte index b4be28df36..128f975527 100644 --- a/plugins/setting-resources/src/components/ClassAttributes.svelte +++ b/plugins/setting-resources/src/components/ClassAttributes.svelte @@ -49,12 +49,12 @@ export let isCard: boolean = false export let showAll: boolean = false export let attributeMapper: - | { - component: AnySvelteComponent - label: IntlString - props: Record - } - | undefined = undefined + | { + component: AnySvelteComponent + label: IntlString + props: Record + } + | undefined = undefined const client = getClient() const hierarchy = client.getHierarchy() @@ -78,7 +78,7 @@ attributes = getCustomAttributes(_class) }) - function getCustomAttributes (_class: Ref>): AnyAttribute[] { + function getCustomAttributes(_class: Ref>): AnyAttribute[] { const cl = hierarchy.getClass(_class) const attributes = Array.from( hierarchy.getAllAttributes(_class, _class === ofClass ? core.class.Doc : cl.extends).values() @@ -90,7 +90,7 @@ return attributes } - export function createAttribute (ev: MouseEvent): void { + export function createAttribute(ev: MouseEvent): void { if (disabled) { return } @@ -102,7 +102,7 @@ }) } - function editLabel (evt: MouseEvent): void { + function editLabel(evt: MouseEvent): void { if (disabled) { return } diff --git a/plugins/setting-resources/src/components/ClassAttributesList.svelte b/plugins/setting-resources/src/components/ClassAttributesList.svelte index e65ab2cfc9..77094a4c47 100644 --- a/plugins/setting-resources/src/components/ClassAttributesList.svelte +++ b/plugins/setting-resources/src/components/ClassAttributesList.svelte @@ -52,12 +52,12 @@ export let showAll: boolean = false export let attributeMapper: - | { - component: AnySvelteComponent - label: IntlString - props: Record - } - | undefined = undefined + | { + component: AnySvelteComponent + label: IntlString + props: Record + } + | undefined = undefined const dispatch = createEventDispatcher() @@ -74,7 +74,7 @@ }) $: attributes = getCustomAttributes(_class) - function getCustomAttributes (_class: Ref>): AnyAttribute[] { + function getCustomAttributes(_class: Ref>): AnyAttribute[] { const cl = hierarchy.getClass(_class) const to = showAll ? ofClass : _class === ofClass && !notUseOfClass ? core.class.Doc : cl.extends const attributes = Array.from(hierarchy.getAllAttributes(_class, to).values()).sort((a, b) => { @@ -91,15 +91,15 @@ attributes = getCustomAttributes(_class) }) - function update (): void { + function update(): void { attributes = getCustomAttributes(_class) } - export async function editAttribute (attribute: AnyAttribute, exist: boolean): Promise { + export async function editAttribute(attribute: AnyAttribute, exist: boolean): Promise { showPopup(EditAttribute, { attribute, exist }, 'top', update) } - export async function overrideAttribute (source: AnyAttribute): Promise { + export async function overrideAttribute(source: AnyAttribute): Promise { const newSeq = await client.createDoc(core.class.CustomSequence, core.space.Workspace, { prefix: '', sequence: 0, @@ -116,7 +116,7 @@ } } - export async function removeAttribute (attribute: AnyAttribute, exist: boolean): Promise { + export async function removeAttribute(attribute: AnyAttribute, exist: boolean): Promise { showPopup( MessageBox, { @@ -131,7 +131,7 @@ ) } - async function showMenu (ev: MouseEvent, attribute: AnyAttribute): Promise { + async function showMenu(ev: MouseEvent, attribute: AnyAttribute): Promise { hovered = attribute._id const exist = (await client.findOne(attribute.attributeOf, { [attribute.name]: { $exists: true } })) !== undefined const actions: Action[] = [ @@ -177,7 +177,7 @@ }) } - function getAttrType (type: Type): IntlString | undefined { + function getAttrType(type: Type): IntlString | undefined { switch (type._class) { case core.class.RefTo: return client.getHierarchy().getClass((type as RefTo).to)?.label @@ -192,7 +192,7 @@ } } - function toRank (str: string | undefined): Rank | undefined { + function toRank(str: string | undefined): Rank | undefined { if (str === undefined) return if (str.startsWith('0|')) { return str @@ -200,7 +200,7 @@ return '0|' + str.replaceAll(/[-:_]/g, '').toLowerCase() } - async function moveHadler (e: CustomEvent): Promise { + async function moveHadler(e: CustomEvent): Promise { const { item, prev, next } = e.detail const rank = makeRank(prev?.rank ?? toRank(prev?._id), next?.rank ?? toRank(next?._id)) await client.update(item, { rank }) diff --git a/plugins/setting-resources/src/components/ClassHierarchy.svelte b/plugins/setting-resources/src/components/ClassHierarchy.svelte index d2024d0574..04fd49be9f 100644 --- a/plugins/setting-resources/src/components/ClassHierarchy.svelte +++ b/plugins/setting-resources/src/components/ClassHierarchy.svelte @@ -29,7 +29,7 @@ const dispatch = createEventDispatcher() let descendants = new Map>, Ref>[]>() - function getDescendants (_class: Ref>): Ref>[] { + function getDescendants(_class: Ref>): Ref>[] { const hierarchy = client.getHierarchy() const result: Ref>[] = [] const desc = hierarchy.getDescendants(_class) @@ -52,7 +52,7 @@ return result } - function fillDescendants (classes: Ref>[]): void { + function fillDescendants(classes: Ref>[]): void { for (const cl of classes) { descendants.set(cl, getDescendants(cl)) } diff --git a/plugins/setting-resources/src/components/ClassSetting.svelte b/plugins/setting-resources/src/components/ClassSetting.svelte index 62a6aca39d..04bfab03ba 100644 --- a/plugins/setting-resources/src/components/ClassSetting.svelte +++ b/plugins/setting-resources/src/components/ClassSetting.svelte @@ -39,12 +39,12 @@ export let ofClass: Ref> | undefined = undefined export let attributeMapper: - | { - component: AnySvelteComponent - label: IntlString - props: Record - } - | undefined = undefined + | { + component: AnySvelteComponent + label: IntlString + props: Record + } + | undefined = undefined export let withoutHeader = false export let useOfClassAttributes = true diff --git a/plugins/setting-resources/src/components/Configure.svelte b/plugins/setting-resources/src/components/Configure.svelte index 478ffa485a..02dada2d04 100644 --- a/plugins/setting-resources/src/components/Configure.svelte +++ b/plugins/setting-resources/src/components/Configure.svelte @@ -28,7 +28,7 @@ const client = getClient() - async function change (config: PluginConfiguration, value: boolean): Promise { + async function change(config: PluginConfiguration, value: boolean): Promise { await client.update(config, { enabled: value }) diff --git a/plugins/setting-resources/src/components/CreateAttribute.svelte b/plugins/setting-resources/src/components/CreateAttribute.svelte index d07b0c100d..9ec990e18c 100644 --- a/plugins/setting-resources/src/components/CreateAttribute.svelte +++ b/plugins/setting-resources/src/components/CreateAttribute.svelte @@ -61,7 +61,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - async function save (): Promise { + async function save(): Promise { if (type === undefined) return const data: Data = { @@ -86,7 +86,7 @@ clearSettingsStore() } - function getTypes (): DropdownIntlItem[] { + function getTypes(): DropdownIntlItem[] { const descendants = hierarchy.getDescendants(core.class.Type) const res: DropdownIntlItem[] = [] for (const descendant of descendants) { @@ -106,7 +106,7 @@ $: selectType(selectedType) - function selectType (type: Ref>> | undefined): void { + function selectType(type: Ref>> | undefined): void { if (type === undefined) return const _class = hierarchy.getClass(type) const editor = hierarchy.as(_class, view.mixin.ObjectEditor) @@ -129,7 +129,7 @@ extra = e.detail?.extra ?? extra } } - function setIcon (): void { + function setIcon(): void { showPopup(IconPicker, { icon, showEmoji: false, showColor: false }, 'top', async (res) => { if (res !== undefined) { icon = res.icon diff --git a/plugins/setting-resources/src/components/CreateAttributePopup.svelte b/plugins/setting-resources/src/components/CreateAttributePopup.svelte index 35c0d62833..6106bd4d6a 100644 --- a/plugins/setting-resources/src/components/CreateAttributePopup.svelte +++ b/plugins/setting-resources/src/components/CreateAttributePopup.svelte @@ -60,7 +60,7 @@ const dispatch = createEventDispatcher() - async function save (): Promise { + async function save(): Promise { if (type === undefined) return const data: Data = { @@ -84,7 +84,7 @@ dispatch('close') } - function getTypes (): DropdownIntlItem[] { + function getTypes(): DropdownIntlItem[] { const descendants = hierarchy.getDescendants(core.class.Type) const res: DropdownIntlItem[] = [] for (const descendant of descendants) { @@ -103,7 +103,7 @@ $: selectType(selectedType) - function selectType (type: Ref>> | undefined): void { + function selectType(type: Ref>> | undefined): void { if (type === undefined) return const _class = hierarchy.getClass(type) const editor = hierarchy.as(_class, view.mixin.ObjectEditor) @@ -127,7 +127,7 @@ } } - function setIcon (): void { + function setIcon(): void { showPopup(IconPicker, { icon, showEmoji: false, showColor: false }, 'top', async (res) => { if (res !== undefined) { icon = res.icon diff --git a/plugins/setting-resources/src/components/CreateMixin.svelte b/plugins/setting-resources/src/components/CreateMixin.svelte index b5190dbc83..2dacf7f363 100644 --- a/plugins/setting-resources/src/components/CreateMixin.svelte +++ b/plugins/setting-resources/src/components/CreateMixin.svelte @@ -26,7 +26,7 @@ const client = getClient() const dispatch = createEventDispatcher() - async function save (): Promise { + async function save(): Promise { const data: Data>> = { extends: value._id, label: getEmbeddedLabel(name), diff --git a/plugins/setting-resources/src/components/CreateRelation.svelte b/plugins/setting-resources/src/components/CreateRelation.svelte index d616ffb526..68bd62fca5 100644 --- a/plugins/setting-resources/src/components/CreateRelation.svelte +++ b/plugins/setting-resources/src/components/CreateRelation.svelte @@ -39,7 +39,7 @@ .map((p) => p.attachTo) ) - function filterClasses ( + function filterClasses( descendants: Set>>, viewlets: Set>>, exclude: Ref>[] @@ -98,7 +98,7 @@ let nameB: string = '' let automationOnly = false - async function save (): Promise { + async function save(): Promise { if (classBRef === undefined || classARef === undefined) { return } @@ -132,7 +132,7 @@ $: classA = getAClass(aClass) - function getAClass (aClass: Ref> | undefined): DropdownIntlItem | undefined { + function getAClass(aClass: Ref> | undefined): DropdownIntlItem | undefined { if (aClass === undefined) { return undefined } diff --git a/plugins/setting-resources/src/components/EditAttribute.svelte b/plugins/setting-resources/src/components/EditAttribute.svelte index 7a113f6b16..e0a83645b5 100644 --- a/plugins/setting-resources/src/components/EditAttribute.svelte +++ b/plugins/setting-resources/src/components/EditAttribute.svelte @@ -67,7 +67,7 @@ name = p }) - async function save (): Promise { + async function save(): Promise { if (disabled) { return } @@ -106,7 +106,7 @@ clearSettingsStore() } - function getTypes (): DropdownIntlItem[] { + function getTypes(): DropdownIntlItem[] { const descendants = hierarchy.getDescendants(core.class.Type) const res: DropdownIntlItem[] = [] for (const descendant of descendants) { @@ -126,7 +126,7 @@ $: selectedType && selectType(selectedType) - function selectType (type: Ref>>): void { + function selectType(type: Ref>>): void { const _class = hierarchy.getClass(type) const editor = hierarchy.as(_class, view.mixin.ObjectEditor) if (editor.editor !== undefined) { @@ -149,7 +149,7 @@ } } - async function remove (evt: MouseEvent): Promise { + async function remove(evt: MouseEvent): Promise { const impl = await getResource(view.actionImpl.Delete) await impl(attribute, evt, { afterDelete: () => { @@ -158,13 +158,13 @@ }) } - async function hide (): Promise { + async function hide(): Promise { const value = !attribute.hidden attribute.hidden = value await client.update(attribute, { hidden: value }) } - function setIcon (): void { + function setIcon(): void { showPopup(IconPicker, { icon, showEmoji: false, showColor: false }, 'top', async (res) => { if (res !== undefined) { icon = res.icon @@ -176,11 +176,11 @@ client.getModel().findObject(getAttributePermissionRef(attribute, false)) !== undefined || client.getModel().findObject(getAttributePermissionRef(attribute, true)) !== undefined - function getAttributePermissionRef (attr: AnyAttribute, forbidden: boolean): Ref { + function getAttributePermissionRef(attr: AnyAttribute, forbidden: boolean): Ref { return `${attr._id}_${forbidden ? 'forbidden' : 'allowed'}` as Ref } - function changeRestricted (): void { + function changeRestricted(): void { showPopup( MessageBox, { diff --git a/plugins/setting-resources/src/components/EditClassLabel.svelte b/plugins/setting-resources/src/components/EditClassLabel.svelte index 040a30e806..d6791def24 100644 --- a/plugins/setting-resources/src/components/EditClassLabel.svelte +++ b/plugins/setting-resources/src/components/EditClassLabel.svelte @@ -27,7 +27,7 @@ const client = getClient() const dispatch = createEventDispatcher() - async function save (newLabel: IntlString): Promise { + async function save(newLabel: IntlString): Promise { const update: DocumentUpdate> = {} if (newLabel !== clazz.label) { update.label = newLabel diff --git a/plugins/setting-resources/src/components/EditEnum.svelte b/plugins/setting-resources/src/components/EditEnum.svelte index 01d38f09e0..b8ba7d1e83 100644 --- a/plugins/setting-resources/src/components/EditEnum.svelte +++ b/plugins/setting-resources/src/components/EditEnum.svelte @@ -50,7 +50,7 @@ $: matched = values.includes(newValue.trim()) - async function save (): Promise { + async function save(): Promise { if (value === undefined) { const _id = await client.createDoc(core.class.Enum, core.space.Model, { name, @@ -66,7 +66,7 @@ } } - function add (): void { + function add(): void { newValue = newValue.trim() if (newValue.length === 0) return if (matched) return @@ -75,7 +75,7 @@ newValue = '' } - function remove (value: string): void { + function remove(value: string): void { values = values.filter((p) => p !== value) } @@ -94,7 +94,7 @@ let opened: boolean = false let inputFile: HTMLInputElement - function processText (text: string): void { + function processText(text: string): void { const newValues = text.split('\n').map((it) => it.trim()) for (const v of newValues) { if (!values.includes(v)) { @@ -104,12 +104,12 @@ values = values newValue = '' } - async function processFile (file: File): Promise { + async function processFile(file: File): Promise { const text = await file.text() processText(text) } - function fileSelected (): void { + function fileSelected(): void { const list = inputFile.files if (list === null || list.length === 0) return for (let index = 0; index < list.length; index++) { @@ -121,7 +121,7 @@ inputFile.value = '' } - function fileDrop (e: DragEvent): void { + function fileDrop(e: DragEvent): void { dragover = false const list = e.dataTransfer?.files if (list === undefined || list.length === 0) return @@ -132,7 +132,7 @@ } } } - function pasteAction (evt: ClipboardEvent): void { + function pasteAction(evt: ClipboardEvent): void { const items = evt.clipboardData?.items ?? [] for (const index in items) { const item = items[index] @@ -144,7 +144,7 @@ } } } - async function handleClipboard (): Promise { + async function handleClipboard(): Promise { const text = await navigator.clipboard.readText() processText(text) } @@ -179,7 +179,7 @@ } } - function showConfirmationDialog (): void { + function showConfirmationDialog(): void { const isEnumEmpty = values.length === 0 const oldValues = value?.enumValues ?? [] const isEnumSame = values.length === oldValues.length && values.every((it, i) => it === oldValues[i]) diff --git a/plugins/setting-resources/src/components/EditRelation.svelte b/plugins/setting-resources/src/components/EditRelation.svelte index b3cf303e67..9670c37bc8 100644 --- a/plugins/setting-resources/src/components/EditRelation.svelte +++ b/plugins/setting-resources/src/components/EditRelation.svelte @@ -32,7 +32,7 @@ let nameB = association.nameB let automationOnly = association.automationOnly ?? false - async function save (): Promise { + async function save(): Promise { await client.diffUpdate(association, { nameA, nameB, @@ -58,7 +58,7 @@ const label = items.find((item) => item.id === association?.type)?.label ?? ('' as IntlString) - async function remove (): Promise { + async function remove(): Promise { showPopup(MessageBox, { label: view.string.DeleteObject, message: view.string.DeleteObjectConfirm, diff --git a/plugins/setting-resources/src/components/EnumSetting.svelte b/plugins/setting-resources/src/components/EnumSetting.svelte index 000e7e514b..e7e13bf952 100644 --- a/plugins/setting-resources/src/components/EnumSetting.svelte +++ b/plugins/setting-resources/src/components/EnumSetting.svelte @@ -47,7 +47,7 @@ } }) - function create () { + function create() { showPopup(setting.component.EditEnum, { title: setting.string.CreateEnum }, 'top') } diff --git a/plugins/setting-resources/src/components/EnumValues.svelte b/plugins/setting-resources/src/components/EnumValues.svelte index b7281263d0..99851d65bb 100644 --- a/plugins/setting-resources/src/components/EnumValues.svelte +++ b/plugins/setting-resources/src/components/EnumValues.svelte @@ -44,7 +44,7 @@ let newItem: boolean = false let opened: boolean = false - async function add () { + async function add() { if (newValue.trim().length === 0) return if (matched) return await client.update(value, { @@ -54,7 +54,7 @@ newItem = false } - async function remove (target: string) { + async function remove(target: string) { await client.update(value, { $pull: { enumValues: target } }) @@ -71,12 +71,12 @@ // $: filtered = newValue.length > 0 ? value.enumValues.filter((it) => it.includes(newValue)) : [] $: matched = value.enumValues.includes(newValue.trim()) - async function handleClipboard (): Promise { + async function handleClipboard(): Promise { const text = await navigator.clipboard.readText() processText(text) } - async function processText (text: string): Promise { + async function processText(text: string): Promise { const newValues = text.split('\n').map((it) => it.trim()) for (const v of newValues) { if (!value.enumValues.includes(v)) { @@ -88,12 +88,12 @@ newValue = '' } let inputFile: HTMLInputElement - async function processFile (file: File): Promise { + async function processFile(file: File): Promise { const text = await file.text() processText(text) } - function fileSelected () { + function fileSelected() { const list = inputFile.files if (list === null || list.length === 0) return for (let index = 0; index < list.length; index++) { @@ -124,13 +124,13 @@ // ) // } - async function update (value: Enum): Promise { + async function update(value: Enum): Promise { await client.update(value, { name: value.name }) } - async function onDrop () { + async function onDrop() { await client.update(value, { enumValues: value.enumValues }) } diff --git a/plugins/setting-resources/src/components/EnumValuesList.svelte b/plugins/setting-resources/src/components/EnumValuesList.svelte index 8133048fd3..749141f4e3 100644 --- a/plugins/setting-resources/src/components/EnumValuesList.svelte +++ b/plugins/setting-resources/src/components/EnumValuesList.svelte @@ -34,7 +34,7 @@ let opened: number | undefined = undefined const elements: HTMLElement[] = [] - function dragswap (ev: MouseEvent, item: string): boolean { + function dragswap(ev: MouseEvent, item: string): boolean { const s = values.findIndex((p) => p === selected) const i = values.findIndex((p) => p === item) if (i < s) { @@ -45,7 +45,7 @@ return false } - function dragover (ev: MouseEvent, item: string): void { + function dragover(ev: MouseEvent, item: string): void { const s = values.findIndex((p) => p === selected) const i = values.findIndex((p) => p === item) if (dragswap(ev, item)) { @@ -55,11 +55,11 @@ const dispatch = createEventDispatcher() - async function remove (target: string): Promise { + async function remove(target: string): Promise { dispatch('remove', target) } - async function onDrop (): Promise { + async function onDrop(): Promise { dispatch('drop') } @@ -77,7 +77,7 @@ } ] - function openPopup (ev: MouseEvent, n: number) { + function openPopup(ev: MouseEvent, n: number) { if (opened === undefined) { opened = n showPopup(ModernPopup, { items }, eventToHTMLElement(ev), (result) => { @@ -102,7 +102,7 @@ } } - function update (): void { + function update(): void { dispatch('update', values) } diff --git a/plugins/setting-resources/src/components/General.svelte b/plugins/setting-resources/src/components/General.svelte index 9aaee0ad0a..5e35484811 100644 --- a/plugins/setting-resources/src/components/General.svelte +++ b/plugins/setting-resources/src/components/General.svelte @@ -65,7 +65,7 @@ void loadWorkspaceName() - async function loadWorkspaceName (): Promise { + async function loadWorkspaceName(): Promise { const res = await accountClient.getWorkspaceInfo() workspaceUrl = res.url @@ -75,7 +75,7 @@ loading = false } - async function handleEditName (): Promise { + async function handleEditName(): Promise { if (editNameDisabled) { return } @@ -87,12 +87,12 @@ isEditingName = !isEditingName } - function handleCancelEditName (): void { + function handleCancelEditName(): void { name = oldName isEditingName = false } - async function handleDelete (): Promise { + async function handleDelete(): Promise { showPopup(MessageBox, { label: settingsRes.string.DeleteWorkspace, message: settingsRes.string.DeleteWorkspaceConfirm, @@ -118,7 +118,7 @@ } ) - async function handleAvatarDone (): Promise { + async function handleAvatarDone(): Promise { const existing = await client.findOne(settingsRes.class.WorkspaceSetting, { _id: settingsRes.ids.WorkspaceSetting }) if (existing !== undefined) { const avatar = await avatarEditor.createAvatar() @@ -153,12 +153,12 @@ } ) - async function changePasswordAgingRules (val: number | undefined): Promise { + async function changePasswordAgingRules(val: number | undefined): Promise { passwordAgingRule = val !== undefined ? Math.max(val, 1) : undefined await accountClient.updatePasswordAgingRule(passwordAgingRule) } - function handleTogglePermissions (): void { + function handleTogglePermissions(): void { const newState = !arePermissionsDisabled showPopup(MessageBox, { label: newState ? settingsRes.string.DisablePermissions : settingsRes.string.EnablePermissions, diff --git a/plugins/setting-resources/src/components/GuestPermissionsSettings.svelte b/plugins/setting-resources/src/components/GuestPermissionsSettings.svelte index 2c828b786e..98f857a576 100644 --- a/plugins/setting-resources/src/components/GuestPermissionsSettings.svelte +++ b/plugins/setting-resources/src/components/GuestPermissionsSettings.svelte @@ -117,9 +117,9 @@ $: workspaceApplications = client .getModel() .findAllSync(workbench.class.Application, { - hidden: false, - _id: { $nin: excludedApplicationIds } - }) + hidden: false, + _id: { $nin: excludedApplicationIds } + }) .filter((app) => !hiddenApplicationIds.includes(app._id)) $: applicationsMap = new Map, Application>( @@ -140,23 +140,23 @@ /** Anonymous (read-only guest) module rows are view-only until workspace allows anonymous guests. */ $: anonymousModulePermissionsReadOnly = guestPermissionsTab === 'anonymous' && !allowReadOnlyGuests - function getApplicationLabel (applicationId: Ref): IntlString { + function getApplicationLabel(applicationId: Ref): IntlString { return applicationsMap.get(applicationId)?.label ?? getEmbeddedLabel(applicationId) } - function getApplication (applicationId: Ref): Application | undefined { + function getApplication(applicationId: Ref): Application | undefined { return applicationsMap.get(applicationId) } - function getDisabledPermissions (group: ModulePermissionGroup): Set> { + function getDisabledPermissions(group: ModulePermissionGroup): Set> { return new Set(group.disabledPermissions ?? []) } - function isPermissionActive (group: ModulePermissionGroup, permissionId: Ref): boolean { + function isPermissionActive(group: ModulePermissionGroup, permissionId: Ref): boolean { return !getDisabledPermissions(group).has(permissionId) } - async function togglePermission ( + async function togglePermission( group: ModulePermissionGroup, permissionId: Ref, enabled: boolean @@ -174,44 +174,44 @@ } as any) } - async function toggleModule (group: ModulePermissionGroup, enabled: boolean): Promise { + async function toggleModule(group: ModulePermissionGroup, enabled: boolean): Promise { if (anonymousModulePermissionsReadOnly) return await client.updateDoc(core.class.ModulePermissionGroup, core.space.Model, group._id, { enabled } as any) } - function isModuleEnabled (group: ModulePermissionGroup): boolean { + function isModuleEnabled(group: ModulePermissionGroup): boolean { return group.enabled ?? true } - function getPermissionLabel (permissionId: Ref): IntlString { + function getPermissionLabel(permissionId: Ref): IntlString { return permissionsMap.get(permissionId)?.label ?? getEmbeddedLabel(permissionId) } - function onAccessToggle (group: ModulePermissionGroup, ev: Event): void { + function onAccessToggle(group: ModulePermissionGroup, ev: Event): void { const e = ev as CustomEvent void toggleModule(group, e.detail) } - function onPermissionToggle (group: ModulePermissionGroup, permissionId: Ref, ev: Event): void { + function onPermissionToggle(group: ModulePermissionGroup, permissionId: Ref, ev: Event): void { const e = ev as CustomEvent void togglePermission(group, permissionId, e.detail) } - function handleAccessToggle (group: ModulePermissionGroup): (ev: Event) => void { + function handleAccessToggle(group: ModulePermissionGroup): (ev: Event) => void { return (ev: Event) => { onAccessToggle(group, ev) } } - function handlePermissionToggle (group: ModulePermissionGroup, permissionId: Ref): (ev: Event) => void { + function handlePermissionToggle(group: ModulePermissionGroup, permissionId: Ref): (ev: Event) => void { return (ev: Event) => { onPermissionToggle(group, permissionId, ev) } } - async function handleToggleReadonlyAccess (e: CustomEvent): Promise { + async function handleToggleReadonlyAccess(e: CustomEvent): Promise { const enabled = e.detail const guestUserInfo = await accountClient.updateAllowReadOnlyGuests(enabled) allowReadOnlyGuests = enabled @@ -241,20 +241,20 @@ } } - async function handleToggleGuestSignUp (e: CustomEvent): Promise { + async function handleToggleGuestSignUp(e: CustomEvent): Promise { await accountClient.updateAllowGuestSignUp(e.detail) allowGuestSignUp = e.detail } - function onReadonlyGuestsToggle (e: CustomEvent): void { + function onReadonlyGuestsToggle(e: CustomEvent): void { void handleToggleReadonlyAccess(e) } - function onGuestSignUpToggle (e: CustomEvent): void { + function onGuestSignUpToggle(e: CustomEvent): void { void handleToggleGuestSignUp(e) } - async function onAllowedCardsChange (value: Ref[]): Promise { + async function onAllowedCardsChange(value: Ref[]): Promise { if (existingGuestChatSettings === undefined) { await client.createDoc(communication.class.GuestCommunicationSettings, core.space.Workspace, { allowedCards: value, diff --git a/plugins/setting-resources/src/components/InviteSetting.svelte b/plugins/setting-resources/src/components/InviteSetting.svelte index 73982e95e6..95b6164185 100644 --- a/plugins/setting-resources/src/components/InviteSetting.svelte +++ b/plugins/setting-resources/src/components/InviteSetting.svelte @@ -79,7 +79,7 @@ }) } - function applyInviteSettings (set: InviteSettings[]): void { + function applyInviteSettings(set: InviteSettings[]): void { existingInviteSettings = set const state = resolveInviteSettings(set[0]) expTime = state.expirationTime @@ -93,12 +93,12 @@ $: query.query(setting.class.InviteSettings, {}, applyInviteSettings) - function normalizeValues (): void { + function normalizeValues(): void { expTime = Math.max(1, expTime) limit = noLimit ? -1 : Math.max(1, limit ?? 1) } - async function setInviteSettings (): Promise { + async function setInviteSettings(): Promise { if (inviteLimitInvalid) return normalizeValues() const savedLimit = limit ?? -1 @@ -138,12 +138,12 @@ } } - async function autoSaveIfValid (): Promise { + async function autoSaveIfValid(): Promise { if (loading || inviteLimitInvalid) return await setInviteSettings() } - function handleNoLimitChange (e: CustomEvent): void { + function handleNoLimitChange(e: CustomEvent): void { noLimit = e.detail if (noLimit) { limit = -1 @@ -153,20 +153,20 @@ void autoSaveIfValid() } - function handleExpTimeChange (): void { + function handleExpTimeChange(): void { void autoSaveIfValid() } - function handleLimitChange (): void { + function handleLimitChange(): void { void autoSaveIfValid() } - function handleDefaultInviteRoleSelected (e: CustomEvent): void { + function handleDefaultInviteRoleSelected(e: CustomEvent): void { defaultInviteRole = e.detail void autoSaveIfValid() } - function handleGeneratorRolesSelected (e: CustomEvent): void { + function handleGeneratorRolesSelected(e: CustomEvent): void { if (e.detail != null) { inviteLinkGeneratorRoles = [...e.detail] } diff --git a/plugins/setting-resources/src/components/MailboxEditorModal.svelte b/plugins/setting-resources/src/components/MailboxEditorModal.svelte index 7d066b3b91..6b4cf93bd4 100644 --- a/plugins/setting-resources/src/components/MailboxEditorModal.svelte +++ b/plugins/setting-resources/src/components/MailboxEditorModal.svelte @@ -37,12 +37,12 @@ $: canSave = !loading && validateName(name) $: domains = mailboxOptions.availableDomains.map((d) => ({ _id: d, label: '@' + d })) - function validateName (name: string): boolean { + function validateName(name: string): boolean { const n = name.trim() return n.length >= mailboxOptions.minNameLength && n.length <= mailboxOptions.maxNameLength && !name.includes('+') } - async function createMailbox (): Promise { + async function createMailbox(): Promise { const { mailbox, socialId } = await getAccountClient().createMailbox(name, (domain ?? domains[0])._id) console.log('Mailbox created', mailbox, socialId) const currentUser = getCurrentEmployee() @@ -75,7 +75,7 @@ ) } - async function save (): Promise { + async function save(): Promise { loading = true try { await createMailbox() @@ -89,7 +89,7 @@ } } - function formatError (err: any): void { + function formatError(err: any): void { error = `${err}` let errMsg: IntlString | undefined const errParams: Record = {} diff --git a/plugins/setting-resources/src/components/MailboxItem.svelte b/plugins/setting-resources/src/components/MailboxItem.svelte index 087f5982a7..546eb804fd 100644 --- a/plugins/setting-resources/src/components/MailboxItem.svelte +++ b/plugins/setting-resources/src/components/MailboxItem.svelte @@ -38,7 +38,7 @@ let opened = false - function deleteMailboxAction (): void { + function deleteMailboxAction(): void { showPopup( MessageBox, { @@ -61,7 +61,7 @@ ) } - async function deleteMailbox (): Promise { + async function deleteMailbox(): Promise { await getAccountClient().deleteMailbox(mailbox.mailbox) const client = getClient() const currentUser = getCurrentEmployee() diff --git a/plugins/setting-resources/src/components/Mailboxes.svelte b/plugins/setting-resources/src/components/Mailboxes.svelte index d8afac6b0a..7985660d06 100644 --- a/plugins/setting-resources/src/components/Mailboxes.svelte +++ b/plugins/setting-resources/src/components/Mailboxes.svelte @@ -37,7 +37,7 @@ let mailboxes: MailboxInfo[] = [] let mailboxOptions: MailboxOptions | undefined - function loadMailboxes (): void { + function loadMailboxes(): void { getAccountClient() .getMailboxes() .then((res) => { @@ -52,7 +52,7 @@ }) } - function loadMailboxOptions (): void { + function loadMailboxOptions(): void { getAccountClient() .getMailboxOptions() .then((res) => { @@ -66,7 +66,7 @@ }) } - function create (): void { + function create(): void { if (mailboxOptions === undefined) { console.warn('Mailbox options not loaded yet') return diff --git a/plugins/setting-resources/src/components/Members.svelte b/plugins/setting-resources/src/components/Members.svelte index 38ff03ee7b..61dc3564ca 100644 --- a/plugins/setting-resources/src/components/Members.svelte +++ b/plugins/setting-resources/src/components/Members.svelte @@ -57,7 +57,7 @@ .sort((a, b) => formatName(a.name).localeCompare(formatName(b.name))) }) - async function change (personUuid: string, value: AccountRole): Promise { + async function change(personUuid: string, value: AccountRole): Promise { if (accountClient == null) { return } @@ -81,7 +81,7 @@ (e) => e.personUuid != null && workspaceMembers[e.personUuid] === AccountRole.Owner ).length - function getItems (role: AccountRole, currentAccount: Account): DropdownIntlItem[] { + function getItems(role: AccountRole, currentAccount: Account): DropdownIntlItem[] { return items.filter((i) => i.id === role || hasAccountRole(currentAccount, i.id as AccountRole)) } diff --git a/plugins/setting-resources/src/components/OfficeSettings.svelte b/plugins/setting-resources/src/components/OfficeSettings.svelte index 27afde9299..7e61e7b97d 100644 --- a/plugins/setting-resources/src/components/OfficeSettings.svelte +++ b/plugins/setting-resources/src/components/OfficeSettings.svelte @@ -35,7 +35,7 @@ loading = false }) - async function toggleDefaultTranscription (e: CustomEvent): Promise { + async function toggleDefaultTranscription(e: CustomEvent): Promise { const enabled = e.detail defaultStartWithTranscription = enabled const newSettings = { @@ -55,7 +55,7 @@ } } - async function toggleDefaultRecording (e: CustomEvent): Promise { + async function toggleDefaultRecording(e: CustomEvent): Promise { const enabled = e.detail defaultStartWithRecording = enabled const newSettings = { diff --git a/plugins/setting-resources/src/components/Password.svelte b/plugins/setting-resources/src/components/Password.svelte index 8b40619dc8..a350400932 100644 --- a/plugins/setting-resources/src/components/Password.svelte +++ b/plugins/setting-resources/src/components/Password.svelte @@ -43,7 +43,7 @@ password !== password2 || saved - async function checkPassword (): Promise { + async function checkPassword(): Promise { try { const check = await getResource(login.function.CheckHasPassword) hasPassword = await check() @@ -54,7 +54,7 @@ } } - async function save (): Promise { + async function save(): Promise { label = setting.string.Saving saved = true try { @@ -70,7 +70,7 @@ } } - async function sendSetupLink (): Promise { + async function sendSetupLink(): Promise { sendingLink = true noEmailLinked = false try { @@ -89,7 +89,7 @@ } } - function updateSaved (p1: string, p2: string, p3: string): void { + function updateSaved(p1: string, p2: string, p3: string): void { saved = false label = presentation.string.Save error = false diff --git a/plugins/setting-resources/src/components/Profile.svelte b/plugins/setting-resources/src/components/Profile.svelte index cf6f1173e5..2f5bd79d33 100644 --- a/plugins/setting-resources/src/components/Profile.svelte +++ b/plugins/setting-resources/src/components/Profile.svelte @@ -64,7 +64,7 @@ } let avatarEditor: EditableAvatar - async function onAvatarDone (): Promise { + async function onAvatarDone(): Promise { if ($myEmployeeStore === undefined) return if ($myEmployeeStore.avatar != null) { @@ -76,7 +76,7 @@ const manager = createFocusManager() - async function leave (): Promise { + async function leave(): Promise { showPopup(MessageBox, { label: setting.string.Leave, message: setting.string.LeaveDescr, @@ -111,7 +111,7 @@ }) } - async function nameChange (): Promise { + async function nameChange(): Promise { if ($myEmployeeStore !== undefined) { await client.diffUpdate($myEmployeeStore, { name: combineName(firstName, lastName) diff --git a/plugins/setting-resources/src/components/RelationSetting.svelte b/plugins/setting-resources/src/components/RelationSetting.svelte index a6a56bfb5e..2b18e0709d 100644 --- a/plugins/setting-resources/src/components/RelationSetting.svelte +++ b/plugins/setting-resources/src/components/RelationSetting.svelte @@ -34,7 +34,7 @@ $: filtered = filterAssociations(associations, _classes, exclude) - function filterAssociations ( + function filterAssociations( associations: Association[], _classes: Ref>[], exclude: Ref>[] @@ -63,7 +63,7 @@ return res } - function createRelation (): void { + function createRelation(): void { selected = { classA: '' as Ref>, classB: '' as Ref>, @@ -73,16 +73,16 @@ } } - function isAssociation (data: Data | Association | undefined): data is Association { + function isAssociation(data: Data | Association | undefined): data is Association { return (data as Association)?._id !== undefined } - function getClassLabel (_class: Ref>): IntlString | undefined { + function getClassLabel(_class: Ref>): IntlString | undefined { const _classLabel = client.getModel().findObject(_class) return _classLabel?.label } - async function getLabel (association: Association): Promise { + async function getLabel(association: Association): Promise { const aLabel = getClassLabel(association.classA) const bLabel = getClassLabel(association.classB) const aClass = aLabel !== undefined ? await translate(aLabel, {}) : undefined @@ -92,7 +92,7 @@ defineSeparators('workspaceSettings', twoPanelsSeparators) - async function remove (val: Association | Data | undefined): Promise { + async function remove(val: Association | Data | undefined): Promise { if (isAssociation(val)) { showPopup(MessageBox, { label: view.string.DeleteObject, diff --git a/plugins/setting-resources/src/components/Settings.svelte b/plugins/setting-resources/src/components/Settings.svelte index a58f02c250..f800ed83e6 100644 --- a/plugins/setting-resources/src/components/Settings.svelte +++ b/plugins/setting-resources/src/components/Settings.svelte @@ -88,10 +88,10 @@ }, 500) }) - function findCategory (name: string): SettingsCategory | undefined { + function findCategory(name: string): SettingsCategory | undefined { return categories.find((x) => x.name === name) } - function selectCategory (id: string): void { + function selectCategory(id: string): void { clearSettingsStore() const loc = getCurrentResolvedLocation() if (loc.path[3] === id) { @@ -102,17 +102,17 @@ } navigate(loc) } - function signOut (): void { + function signOut(): void { void logOut() navigate({ path: [loginId] }) Analytics.handleEvent(SettingsEvents.SignOut) Analytics.logout() } - function selectWorkspace (): void { + function selectWorkspace(): void { Analytics.handleEvent(SettingsEvents.SelectWorkspace) navigate({ path: [loginId, 'selectWorkspace'] }) } - function inviteWorkspace (): void { + function inviteWorkspace(): void { Analytics.handleEvent(SettingsEvents.InviteToWorkspace) showPopup(login.component.InviteLink, {}) } diff --git a/plugins/setting-resources/src/components/Spaces.svelte b/plugins/setting-resources/src/components/Spaces.svelte index 39774c118f..602467fe24 100644 --- a/plugins/setting-resources/src/components/Spaces.svelte +++ b/plugins/setting-resources/src/components/Spaces.svelte @@ -69,7 +69,7 @@ } } - async function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): Promise { + async function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): Promise { await client.updateMixin(space._id, space._class, core.space.Space, spaceType.targetClass, { [roleId]: newMembers }) diff --git a/plugins/setting-resources/src/components/TwoFactorSettings.svelte b/plugins/setting-resources/src/components/TwoFactorSettings.svelte index a0678cba18..17393a0a3c 100644 --- a/plugins/setting-resources/src/components/TwoFactorSettings.svelte +++ b/plugins/setting-resources/src/components/TwoFactorSettings.svelte @@ -37,7 +37,7 @@ tfaEnabled = account.tfaEnabled }) - async function toggle2fa () { + async function toggle2fa() { if (tfaEnabled) { // Logic for disabling (needs code) showSetup = true @@ -56,7 +56,7 @@ } } - async function verifyAndEnable () { + async function verifyAndEnable() { isLoading = true try { await getAccountClient().enable2fa(secret, code) @@ -71,7 +71,7 @@ } } - async function verifyAndDisable () { + async function verifyAndDisable() { isLoading = true try { await getAccountClient().disable2fa(code) diff --git a/plugins/setting-resources/src/components/UserRoleSelect.svelte b/plugins/setting-resources/src/components/UserRoleSelect.svelte index 7294db9da9..81c65dda71 100644 --- a/plugins/setting-resources/src/components/UserRoleSelect.svelte +++ b/plugins/setting-resources/src/components/UserRoleSelect.svelte @@ -36,7 +36,7 @@ ? allInviteRoleItems.filter((item) => item.id !== AccountRole.Owner && item.id !== AccountRole.Maintainer) : allInviteRoleItems - function handleSelected (e: CustomEvent): void { + function handleSelected(e: CustomEvent): void { dispatch('selected', e.detail) } diff --git a/plugins/setting-resources/src/components/WorkspaceIdentityColor.svelte b/plugins/setting-resources/src/components/WorkspaceIdentityColor.svelte index 0c83aed920..0bfc03cb2f 100644 --- a/plugins/setting-resources/src/components/WorkspaceIdentityColor.svelte +++ b/plugins/setting-resources/src/components/WorkspaceIdentityColor.svelte @@ -32,7 +32,7 @@ $: logoUrl = workspaceSetting?.icon != null ? getFileUrl(workspaceSetting.icon) : undefined $: void updatePreview(logoUrl, manualColor, syncLogo, showColor) - async function updatePreview ( + async function updatePreview( url: string | undefined, color: string | undefined, syncLogo: boolean, @@ -53,12 +53,12 @@ } } - async function saveColor (value: string | null): Promise { + async function saveColor(value: string | null): Promise { const color = value === null ? null : normalizeIdentityColor(value) if (color !== undefined) await save({ identificationColor: color }) } - async function save ( + async function save( patch: Partial> ): Promise { if (!canEdit || busy) return diff --git a/plugins/setting-resources/src/components/WorkspacePermissionEditor.svelte b/plugins/setting-resources/src/components/WorkspacePermissionEditor.svelte index ce65e4c628..49225b2a3d 100644 --- a/plugins/setting-resources/src/components/WorkspacePermissionEditor.svelte +++ b/plugins/setting-resources/src/components/WorkspacePermissionEditor.svelte @@ -35,7 +35,7 @@ void loadPermissions() }) - async function loadPermissions (): Promise { + async function loadPermissions(): Promise { try { const result = await accountClient.getWorkspaceUsersWithPermission({ permission @@ -48,7 +48,7 @@ } } - async function handleUsersChange (newUsers: AccountUuid[]): Promise { + async function handleUsersChange(newUsers: AccountUuid[]): Promise { const currentUsers = new Set(users) const updatedUsers = new Set(newUsers) diff --git a/plugins/setting-resources/src/components/WorkspaceSettings.svelte b/plugins/setting-resources/src/components/WorkspaceSettings.svelte index c5be61c103..52289ac80b 100644 --- a/plugins/setting-resources/src/components/WorkspaceSettings.svelte +++ b/plugins/setting-resources/src/components/WorkspaceSettings.svelte @@ -52,7 +52,7 @@ { sort: { order: 1 } } ) - function findCategory (name: string): SettingsCategory | undefined { + function findCategory(name: string): SettingsCategory | undefined { return categories.find((x) => x.name === name) } @@ -70,7 +70,7 @@ }, 500) }) - function selectCategory (id: string): void { + function selectCategory(id: string): void { clearSettingsStore() const loc = getCurrentResolvedLocation() loc.path[3] = categoryName diff --git a/plugins/setting-resources/src/components/integrations/IntegrationCard.svelte b/plugins/setting-resources/src/components/integrations/IntegrationCard.svelte index 4a2269c603..0f129cffa0 100644 --- a/plugins/setting-resources/src/components/integrations/IntegrationCard.svelte +++ b/plugins/setting-resources/src/components/integrations/IntegrationCard.svelte @@ -61,11 +61,11 @@ }) }) - function subscribe (): void { + function subscribe(): void { unsubscribers.push(onIntegrationEvent('integration:updated', onUpdateIntegration)) } - function onUpdateIntegration (data: IntegrationUpdatedData): void { + function onUpdateIntegration(data: IntegrationUpdatedData): void { if ( integration !== undefined && data.integration?.socialId === integration.socialId && @@ -75,7 +75,7 @@ } } - async function close (res: any): Promise { + async function close(res: any): Promise { /* TODO: if (res?.value && integration !== undefined) { await client.update(integration, { value: res.value, @@ -84,13 +84,13 @@ } */ } - async function reconnect (res: any): Promise { + async function reconnect(res: any): Promise { if (res?.connected === true && integration !== undefined) { await integrationClient?.setIntegrationEnabled(integration, true) } } - async function disconnect (): Promise { + async function disconnect(): Promise { try { isDisconnecting = true if (integration !== undefined && integrationType.onDisconnect !== undefined) { @@ -116,7 +116,7 @@ } } - async function disconnectAll (): Promise { + async function disconnectAll(): Promise { try { isDisconnecting = true if (integration !== undefined && integrationType.onDisconnectAll !== undefined) { diff --git a/plugins/setting-resources/src/components/integrations/IntegrationLabel.svelte b/plugins/setting-resources/src/components/integrations/IntegrationLabel.svelte index e534661335..f491dade18 100644 --- a/plugins/setting-resources/src/components/integrations/IntegrationLabel.svelte +++ b/plugins/setting-resources/src/components/integrations/IntegrationLabel.svelte @@ -23,7 +23,7 @@ type IntegrationStatus = 'available' | 'disconnected' | 'connected' | 'integrated' - function getIntegrationStatus (integration: Integration | undefined): IntegrationStatus { + function getIntegrationStatus(integration: Integration | undefined): IntegrationStatus { if (integration === undefined) { return 'available' } @@ -36,7 +36,7 @@ return 'integrated' } - function getIntegrationLabel (status: IntegrationStatus): IntlString { + function getIntegrationLabel(status: IntegrationStatus): IntlString { switch (status) { case 'available': return setting.string.Available diff --git a/plugins/setting-resources/src/components/integrations/IntegrationTag.svelte b/plugins/setting-resources/src/components/integrations/IntegrationTag.svelte index f616271244..5dff0a473f 100644 --- a/plugins/setting-resources/src/components/integrations/IntegrationTag.svelte +++ b/plugins/setting-resources/src/components/integrations/IntegrationTag.svelte @@ -31,11 +31,11 @@ const dispatch = createEventDispatcher() - function getColorDefinition (color: number | undefined): ColorDefinition { + function getColorDefinition(color: number | undefined): ColorDefinition { return getPlatformColorDef(color ?? 0, $themeStore.dark) } - function getTagStyle (color: ColorDefinition): string { + function getTagStyle(color: ColorDefinition): string { return ` background: ${color.color + '33'}; border: 1px solid ${color.color + '66'}; diff --git a/plugins/setting-resources/src/components/integrations/Integrations.svelte b/plugins/setting-resources/src/components/integrations/Integrations.svelte index 57b56562fa..418e45532a 100644 --- a/plugins/setting-resources/src/components/integrations/Integrations.svelte +++ b/plugins/setting-resources/src/components/integrations/Integrations.svelte @@ -63,7 +63,7 @@ integrationTypes = res }) - function getIntegrations (type: IntegrationType, integrations: Integration[]): Integration[] { + function getIntegrations(type: IntegrationType, integrations: Integration[]): Integration[] { return integrations.filter((p) => p.kind === type.kind) } @@ -110,7 +110,7 @@ } }) - function subscribe (): void { + function subscribe(): void { unsubscribers.push( onIntegrationEvent('integration:updated', onRefreshIntegrations), onIntegrationEvent('integration:created', onRefreshIntegrations), @@ -118,12 +118,12 @@ ) } - function onRefreshIntegrations (data: any): void { + function onRefreshIntegrations(data: any): void { lastEventTime = Date.now() void refreshIntegrations() } - function startRefreshTimer (): void { + function startRefreshTimer(): void { if (refreshTimer !== null) { clearInterval(refreshTimer) } @@ -138,7 +138,7 @@ }, 10000) } - async function refreshIntegrations (): Promise { + async function refreshIntegrations(): Promise { // If there's already a promise, return it to avoid concurrent calls if (loadIntegrationsPromise !== null) { await loadIntegrationsPromise @@ -160,7 +160,7 @@ loadIntegrationsPromise = null } - async function showErrorNotification (error: string): Promise { + async function showErrorNotification(error: string): Promise { const errorMessage = error === IntegrationError.EMAIL_IS_ALREADY_USED ? await translate(setting.string.EmailIsUsed, {}, $themeStore.language) @@ -174,7 +174,7 @@ ) } - async function showLoadErrorNotification (): Promise { + async function showLoadErrorNotification(): Promise { addNotification( await translate(setting.string.FailedToLoadIntegrations, {}, $themeStore.language), await translate(setting.string.IntegrationError, {}, $themeStore.language), @@ -188,7 +188,7 @@ integration?: Integration } - function getFilteredIntegrationTypes ( + function getFilteredIntegrationTypes( mode: string, integrationTypes: IntegrationType[], integrations: Integration[] @@ -236,7 +236,7 @@ // Reactive statement to get filtered integration types $: filteredIntegrationTypes = getFilteredIntegrationTypes(mode, integrationTypes, integrations) - function getIntegrationKey (integrationInfo: IntegrationInfo): string { + function getIntegrationKey(integrationInfo: IntegrationInfo): string { const { integration, integrationType } = integrationInfo if (integration === undefined && integrationType !== undefined) { return integrationType._id diff --git a/plugins/setting-resources/src/components/socialIds/AddEmailSocialId.svelte b/plugins/setting-resources/src/components/socialIds/AddEmailSocialId.svelte index 72100e3baf..4c7a2816f9 100644 --- a/plugins/setting-resources/src/components/socialIds/AddEmailSocialId.svelte +++ b/plugins/setting-resources/src/components/socialIds/AddEmailSocialId.svelte @@ -52,11 +52,11 @@ let codeForm: CodeForm | undefined let canResend = false - function getCleanEmail (value: string | undefined): string { + function getCleanEmail(value: string | undefined): string { return value?.trim().toLowerCase() ?? '' } - async function sendConfirmation (): Promise { + async function sendConfirmation(): Promise { try { status = OK otpInfo = await accountClient.addEmailSocialId(getCleanEmail(email)) @@ -72,20 +72,20 @@ } } - async function handleSendConfirmation (): Promise { + async function handleSendConfirmation(): Promise { if (otpInfo != null) return await sendConfirmation() } - async function handleResend (): Promise { + async function handleResend(): Promise { if (codeForm != null) codeForm.clear() await sendConfirmation() if (timer != null) timer.restart(retryOn) } - async function handleCode (event: CustomEvent): Promise { + async function handleCode(event: CustomEvent): Promise { const code = event.detail if (code == null) return status = OK diff --git a/plugins/setting-resources/src/components/socialIds/AddSocialId.svelte b/plugins/setting-resources/src/components/socialIds/AddSocialId.svelte index 582ea7d7ff..95e01362b8 100644 --- a/plugins/setting-resources/src/components/socialIds/AddSocialId.svelte +++ b/plugins/setting-resources/src/components/socialIds/AddSocialId.svelte @@ -34,11 +34,11 @@ typeString = s }) - async function handleClose (): Promise { + async function handleClose(): Promise { dispatch('close') } - async function handleSubmit (): Promise { + async function handleSubmit(): Promise { await onSubmit() } diff --git a/plugins/setting-resources/src/components/socialIds/SocialIdRow.svelte b/plugins/setting-resources/src/components/socialIds/SocialIdRow.svelte index 3ca2f005a6..bb52a9bb14 100644 --- a/plugins/setting-resources/src/components/socialIds/SocialIdRow.svelte +++ b/plugins/setting-resources/src/components/socialIds/SocialIdRow.svelte @@ -45,7 +45,7 @@ $: isLogin = loginSocialTypes.includes(socialId.type) $: isPrimary = socialId._id === currAcc.primarySocialId - async function doRelease (): Promise { + async function doRelease(): Promise { try { // Important to always get current account in the callback to avoid race conditions // with the account from the reactive variable @@ -87,7 +87,7 @@ } } - async function handleRelease (): Promise { + async function handleRelease(): Promise { showPopup(MessageBox, { label: setting.string.ReleaseSocialId, message: setting.string.ReleaseSocialIdConfirm, diff --git a/plugins/setting-resources/src/components/socialIds/SocialIdsEditor.svelte b/plugins/setting-resources/src/components/socialIds/SocialIdsEditor.svelte index afbcb4c5e4..d3a05a6005 100644 --- a/plugins/setting-resources/src/components/socialIds/SocialIdsEditor.svelte +++ b/plugins/setting-resources/src/components/socialIds/SocialIdsEditor.svelte @@ -53,14 +53,14 @@ }) .filter(notEmpty) - function handleAdd (ev: MouseEvent): void { + function handleAdd(ev: MouseEvent): void { showPopup(Menu, { actions: addActions }, ev.target as HTMLElement) } $: onlyHuly = socialIds.filter((it) => it.type === SocialIdType.HULY).length === 1 $: onlyLogin = socialIds.filter((it) => loginSocialTypes.includes(it.type)).length === 1 - function handleAccountUpdated (): void { + function handleAccountUpdated(): void { account = getCurrentAccount() } diff --git a/plugins/setting-resources/src/components/spaceTypes/CreateSpaceType.svelte b/plugins/setting-resources/src/components/spaceTypes/CreateSpaceType.svelte index 14be159fcb..599ffe0dea 100644 --- a/plugins/setting-resources/src/components/spaceTypes/CreateSpaceType.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/CreateSpaceType.svelte @@ -32,7 +32,7 @@ let descriptor: SpaceTypeDescriptor | undefined = undefined let handleTypeCreated: (() => Promise) | undefined - async function createType (): Promise { + async function createType(): Promise { if (descriptor === undefined) { return } @@ -62,15 +62,15 @@ $: typeCreator = descriptor !== undefined ? hierarchy.classHierarchyMixin, SpaceTypeCreator>( - descriptor._class, - setting.mixin.SpaceTypeCreator - ) + descriptor._class, + setting.mixin.SpaceTypeCreator + ) : undefined let extraComponent: AnySvelteComponent | undefined $: loadExtraComponent(typeCreator) - async function loadExtraComponent (tc: SpaceTypeCreator | undefined): Promise { + async function loadExtraComponent(tc: SpaceTypeCreator | undefined): Promise { if (tc === undefined) { extraComponent = undefined handleTypeCreated = undefined @@ -81,7 +81,7 @@ extraComponent = await getResource(tc.extraComponent) } - function handleDescriptorSelected (evt: CustomEvent>): void { + function handleDescriptorSelected(evt: CustomEvent>): void { descriptor = descriptors.find((it) => it._id === evt.detail) } diff --git a/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypeContent.svelte b/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypeContent.svelte index fc34b91495..815cd27e0a 100644 --- a/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypeContent.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypeContent.svelte @@ -60,7 +60,7 @@ onDestroy(resolvedLocationStore.subscribe(handleLocationChanged)) - function handleLocationChanged ({ path }: Location): void { + function handleLocationChanged({ path }: Location): void { selectedTypeId = path[4] as Ref if (path.length === 7) { @@ -70,7 +70,7 @@ } } - function selectSubItem (editorId: string | undefined, objId: Ref | undefined): void { + function selectSubItem(editorId: string | undefined, objId: Ref | undefined): void { selectedSubEditorId = editorId selectedSubObjectId = objId } @@ -124,7 +124,7 @@ } } - function handleCrumbSelected (event: CustomEvent): void { + function handleCrumbSelected(event: CustomEvent): void { if (event.detail === 0) { const loc = getCurrentResolvedLocation() loc.path.length = 5 diff --git a/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypes.svelte b/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypes.svelte index f16d73901b..6d4eaa0773 100644 --- a/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypes.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypes.svelte @@ -29,7 +29,7 @@ onDestroy(resolvedLocationStore.subscribe(handleLocationChanged)) - function handleLocationChanged (loc: Location): void { + function handleLocationChanged(loc: Location): void { selectedTypeId = loc.path[4] as Ref } @@ -48,7 +48,7 @@ } ) - function selectProjectType (id: string): void { + function selectProjectType(id: string): void { clearSettingsStore() const loc = getCurrentResolvedLocation() loc.path[3] = categoryName @@ -57,7 +57,7 @@ navigate(loc) } - function handleTypeChange (event: CustomEvent): void { + function handleTypeChange(event: CustomEvent): void { selectProjectType(event.detail) } diff --git a/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypesTools.svelte b/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypesTools.svelte index 1ffdb42310..2aa9935087 100644 --- a/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypesTools.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/ManageSpaceTypesTools.svelte @@ -18,7 +18,7 @@ import CreateSpaceType from './CreateSpaceType.svelte' import { isOwnerOrMaintainer } from '@hcengineering/core' - function handleAdd (): void { + function handleAdd(): void { showPopup(CreateSpaceType, {}, 'top') } diff --git a/plugins/setting-resources/src/components/spaceTypes/RoleEditor.svelte b/plugins/setting-resources/src/components/spaceTypes/RoleEditor.svelte index ce922336cf..2a68ee8ee1 100644 --- a/plugins/setting-resources/src/components/spaceTypes/RoleEditor.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/RoleEditor.svelte @@ -65,7 +65,7 @@ }) } - function handleEditPermissions (evt: Event): void { + function handleEditPermissions(evt: Event): void { if (role === undefined || descriptor === undefined || readonly) { return } @@ -101,7 +101,7 @@ ) } - async function handleDeleteRole (): Promise { + async function handleDeleteRole(): Promise { showPopup( MessageBox, { @@ -115,7 +115,7 @@ ) } - async function performDeleteRole (): Promise { + async function performDeleteRole(): Promise { if (role === undefined) { return } diff --git a/plugins/setting-resources/src/components/spaceTypes/SpaceTypes.svelte b/plugins/setting-resources/src/components/spaceTypes/SpaceTypes.svelte index 641185bbcd..9ef7411187 100644 --- a/plugins/setting-resources/src/components/spaceTypes/SpaceTypes.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/SpaceTypes.svelte @@ -23,7 +23,7 @@ const dispatch = createEventDispatcher() - function handleSelected (type: SpaceType): void { + function handleSelected(type: SpaceType): void { selectedTypeId = type._id dispatch('change', selectedTypeId) diff --git a/plugins/setting-resources/src/components/spaceTypes/editor/CreateRole.svelte b/plugins/setting-resources/src/components/spaceTypes/editor/CreateRole.svelte index 5dd40f74a8..1818fecd93 100644 --- a/plugins/setting-resources/src/components/spaceTypes/editor/CreateRole.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/editor/CreateRole.svelte @@ -29,7 +29,7 @@ permissions: [] } - async function handleRoleCreated (): Promise { + async function handleRoleCreated(): Promise { const name = roleData.name.trim() if (name === '') { return diff --git a/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeEditor.svelte b/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeEditor.svelte index ac3aef2eb2..d54fa14888 100644 --- a/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeEditor.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeEditor.svelte @@ -40,7 +40,7 @@ void loadDescriptor() } - async function loadDescriptor (): Promise { + async function loadDescriptor(): Promise { descriptor = await client.findOne(core.class.SpaceTypeDescriptor, { _id: type.descriptor }) } @@ -50,9 +50,9 @@ }[] = editorDescriptor !== undefined ? editorDescriptor.sections.map(({ id, label }) => ({ - id, - label - })) + id, + label + })) : [] const sectionRefs: Record = {} diff --git a/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeGeneralSectionEditor.svelte b/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeGeneralSectionEditor.svelte index 0b6cd5ed0f..cbec540dc7 100644 --- a/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeGeneralSectionEditor.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeGeneralSectionEditor.svelte @@ -70,7 +70,7 @@ await client.update(type, { [field]: value }) } - const changeMembers = reduceCalls(async function changeMembers (members: AccountUuid[]): Promise { + const changeMembers = reduceCalls(async function changeMembers(members: AccountUuid[]): Promise { if (disabled || type === undefined) { return } @@ -97,7 +97,7 @@ await ops.commit() }) - async function handleDelete (): Promise { + async function handleDelete(): Promise { if (!canDelete || disabled || type == null) { return } diff --git a/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeRolesSectionEditor.svelte b/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeRolesSectionEditor.svelte index 2a6151fcb6..d16fcf9df3 100644 --- a/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeRolesSectionEditor.svelte +++ b/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeRolesSectionEditor.svelte @@ -40,7 +40,7 @@ ) } - function handleRoleSelected (id: string | undefined): void { + function handleRoleSelected(id: string | undefined): void { const loc = getCurrentResolvedLocation() if (id !== undefined) { loc.path[5] = 'roles' diff --git a/plugins/setting-resources/src/components/typeEditors/ArrayEditor.svelte b/plugins/setting-resources/src/components/typeEditors/ArrayEditor.svelte index 02d5307845..8da47eeb4b 100644 --- a/plugins/setting-resources/src/components/typeEditors/ArrayEditor.svelte +++ b/plugins/setting-resources/src/components/typeEditors/ArrayEditor.svelte @@ -63,7 +63,7 @@ } } - function getComponent (selected: Class>): AnyComponent { + function getComponent(selected: Class>): AnyComponent { const editor = hierarchy.as(selected, view.mixin.ObjectEditor) return editor.editor } diff --git a/plugins/setting-resources/src/components/typeEditors/BooleanTypeEditor.svelte b/plugins/setting-resources/src/components/typeEditors/BooleanTypeEditor.svelte index fc273b9b44..3a380924db 100644 --- a/plugins/setting-resources/src/components/typeEditors/BooleanTypeEditor.svelte +++ b/plugins/setting-resources/src/components/typeEditors/BooleanTypeEditor.svelte @@ -34,7 +34,7 @@ } }) - function change () { + function change() { dispatch('change', { type: TypeBoolean(), defaultValue, @@ -42,7 +42,7 @@ }) } - async function changeShowing () { + async function changeShowing() { dispatch('change', { extra: { showInPresenter } }) } diff --git a/plugins/setting-resources/src/components/typeEditors/EmployeeRefEditor.svelte b/plugins/setting-resources/src/components/typeEditors/EmployeeRefEditor.svelte index b8b306aacd..efc480647a 100644 --- a/plugins/setting-resources/src/components/typeEditors/EmployeeRefEditor.svelte +++ b/plugins/setting-resources/src/components/typeEditors/EmployeeRefEditor.svelte @@ -31,11 +31,11 @@ let spaceMembersOnly: boolean = attribute?.spaceMembersOnly ?? false let byRole: Ref | null | undefined = attribute?.byRole - function changeSpaceMembersOnly () { + function changeSpaceMembersOnly() { dispatch('change', { extra: isCard ? { spaceMembersOnly, byRole } : { spaceMembersOnly } }) } - function changeByRole (e: any) { + function changeByRole(e: any) { if (!isCard) return byRole = e.detail dispatch('change', { extra: isCard ? { spaceMembersOnly, byRole } : { spaceMembersOnly } }) diff --git a/plugins/setting-resources/src/components/typeEditors/EnumTypeEditor.svelte b/plugins/setting-resources/src/components/typeEditors/EnumTypeEditor.svelte index a150224633..c309ff1b51 100644 --- a/plugins/setting-resources/src/components/typeEditors/EnumTypeEditor.svelte +++ b/plugins/setting-resources/src/components/typeEditors/EnumTypeEditor.svelte @@ -43,18 +43,18 @@ component: setting.component.EditEnum } - function changeEnum (value: Enum) { + function changeEnum(value: Enum) { type = TypeEnum(value._id) dispatch('change', { type, defaultValue, index: IndexKind.FullText }) } - async function updateSelected (ref: Ref | undefined) { + async function updateSelected(ref: Ref | undefined) { value = ref !== undefined ? await client.findOne(core.class.Enum, { _id: ref }) : undefined } $: updateSelected(ref) - async function edit () { + async function edit() { if (value === undefined) return showPopup(setting.component.EditEnum, { value }, 'top') } diff --git a/plugins/setting-resources/src/components/typeEditors/IdentifierTypeEditor.svelte b/plugins/setting-resources/src/components/typeEditors/IdentifierTypeEditor.svelte index 412b188004..aad1c0135c 100644 --- a/plugins/setting-resources/src/components/typeEditors/IdentifierTypeEditor.svelte +++ b/plugins/setting-resources/src/components/typeEditors/IdentifierTypeEditor.svelte @@ -43,12 +43,12 @@ $: currentSequence = sequences.find((s) => s._id === seq) - async function resetSequence () { + async function resetSequence() { if (!editable || currentSequence === undefined) return await client.update(currentSequence, { sequence: 0 }) } - async function change () { + async function change() { if (!editable) return if (identifiers.has(identifier.toUpperCase())) return if (identifier.toUpperCase() === (currentSequence?.prefix?.toUpperCase() ?? '')) return @@ -65,7 +65,7 @@ } } - async function changeShowing () { + async function changeShowing() { if (seq === undefined) return const type = TypeIdentifier(seq) dispatch('change', { type, index: IndexKind.FullText, extra: { showInPresenter } }) diff --git a/plugins/setting-resources/src/components/typeEditors/NumberTypeEditor.svelte b/plugins/setting-resources/src/components/typeEditors/NumberTypeEditor.svelte index df7ea022c6..25a4718ad2 100644 --- a/plugins/setting-resources/src/components/typeEditors/NumberTypeEditor.svelte +++ b/plugins/setting-resources/src/components/typeEditors/NumberTypeEditor.svelte @@ -30,7 +30,7 @@ let max: number | undefined = type?.max let isInteger = type?.digits === 0 - function updateType (): void { + function updateType(): void { dispatch('change', { type: TypeNumber(min, max, isInteger ? 0 : undefined), defaultValue }) } @@ -40,7 +40,7 @@ } }) - function changeIsInteger (e: CustomEvent): void { + function changeIsInteger(e: CustomEvent): void { isInteger = e.detail updateType() } diff --git a/plugins/setting-resources/src/components/typeEditors/RefEditor.svelte b/plugins/setting-resources/src/components/typeEditors/RefEditor.svelte index 047b6effb9..46c0b19bfe 100644 --- a/plugins/setting-resources/src/components/typeEditors/RefEditor.svelte +++ b/plugins/setting-resources/src/components/typeEditors/RefEditor.svelte @@ -41,7 +41,7 @@ const classes = fillClasses(_classes, exclude) - function fillClasses (classes: Ref>[], exclude: Ref>[]): DropdownIntlItem[] { + function fillClasses(classes: Ref>[], exclude: Ref>[]): DropdownIntlItem[] { const res: DropdownIntlItem[] = [] const descendants = new Set(classes.map((p) => hierarchy.getDescendants(p)).reduce((a, b) => a.concat(b))) // exclude removed card types diff --git a/plugins/setting-resources/src/components/typeEditors/TypesPopup.svelte b/plugins/setting-resources/src/components/typeEditors/TypesPopup.svelte index b8b596bfa2..93afc05b3d 100644 --- a/plugins/setting-resources/src/components/typeEditors/TypesPopup.svelte +++ b/plugins/setting-resources/src/components/typeEditors/TypesPopup.svelte @@ -25,7 +25,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function getTypes (): DropdownIntlItem[] { + function getTypes(): DropdownIntlItem[] { const descendants = hierarchy.getDescendants(core.class.Type) const res: DropdownIntlItem[] = [] for (const descendant of descendants) { diff --git a/plugins/setting-resources/src/inviteSettingsUtils.ts b/plugins/setting-resources/src/inviteSettingsUtils.ts index d6d29454c4..bbf2bc2dd2 100644 --- a/plugins/setting-resources/src/inviteSettingsUtils.ts +++ b/plugins/setting-resources/src/inviteSettingsUtils.ts @@ -26,7 +26,7 @@ const numericAccountRoles = new Set(Object.values(AccountRole).filter((v export function normalizeInviteRole (value: string | AccountRole | undefined, fallback: AccountRole): AccountRole { if (value !== undefined && typeof value === 'number' && numericAccountRoles.has(value)) { - return value as AccountRole + return value } if (typeof value === 'string') { const n = value.toLowerCase() @@ -91,13 +91,10 @@ export function resolveInviteSettings (doc: InviteSettings | undefined): Resolve expirationTime: doc.expirationTime, emailMask: doc.emailMask, limit: doc.limit, - defaultInviteRole: normalizeInviteRole(doc.defaultInviteRole as string | AccountRole | undefined, metaRole), + defaultInviteRole: normalizeInviteRole(doc.defaultInviteRole, metaRole), inviteLinkGeneratorRoles: doc.inviteLinkGeneratorRoles != null && doc.inviteLinkGeneratorRoles.length > 0 - ? normalizeInviteRoles( - doc.inviteLinkGeneratorRoles as Array, - DEFAULT_INVITE_LINK_GENERATOR_ROLES - ) + ? normalizeInviteRoles(doc.inviteLinkGeneratorRoles, DEFAULT_INVITE_LINK_GENERATOR_ROLES) : [...DEFAULT_INVITE_LINK_GENERATOR_ROLES], noLimit: doc.limit === -1 } diff --git a/plugins/setting/.eslintrc.js b/plugins/setting/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/setting/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/setting/eslint.config.mjs b/plugins/setting/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/setting/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/setting/package.json b/plugins/setting/package.json index a3cb5888e4..a03952e99e 100644 --- a/plugins/setting/package.json +++ b/plugins/setting/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/setting/src/index.ts b/plugins/setting/src/index.ts index d7a65ffeac..52f303683f 100644 --- a/plugins/setting/src/index.ts +++ b/plugins/setting/src/index.ts @@ -33,7 +33,7 @@ import { type Integration as AccountIntegration } from '@hcengineering/account-c import { SpaceTypeCreator, SpaceTypeEditor } from './spaceTypeEditor' -export * from './spaceTypeEditor' +export type * from './spaceTypeEditor' export * from './utils' export * from './analytics' diff --git a/plugins/sign/.eslintrc.js b/plugins/sign/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/sign/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/sign/eslint.config.mjs b/plugins/sign/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/sign/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/sign/package.json b/plugins/sign/package.json index ed35b2a281..52b78df1b2 100644 --- a/plugins/sign/package.json +++ b/plugins/sign/package.json @@ -23,19 +23,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "prettier-plugin-svelte": "^3.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20" diff --git a/plugins/support-assets/.eslintrc.js b/plugins/support-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/support-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/support-assets/eslint.config.mjs b/plugins/support-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/support-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/support-assets/package.json b/plugins/support-assets/package.json index c39f448874..99d98d1f5a 100644 --- a/plugins/support-assets/package.json +++ b/plugins/support-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/support-assets/src/lang.ts b/plugins/support-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/support-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/support-resources/.eslintrc.js b/plugins/support-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/support-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/support-resources/eslint.config.mjs b/plugins/support-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/support-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/support-resources/package.json b/plugins/support-resources/package.json index 2719b14195..3006783a8c 100644 --- a/plugins/support-resources/package.json +++ b/plugins/support-resources/package.json @@ -18,22 +18,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/support/.eslintrc.js b/plugins/support/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/support/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/support/eslint.config.mjs b/plugins/support/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/support/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/support/package.json b/plugins/support/package.json index 2a8976dcc4..a4e78a0f51 100644 --- a/plugins/support/package.json +++ b/plugins/support/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/support/src/index.ts b/plugins/support/src/index.ts index fd51cc544c..754748df5a 100644 --- a/plugins/support/src/index.ts +++ b/plugins/support/src/index.ts @@ -18,7 +18,7 @@ import type { Asset, IntlString, Plugin, Resource } from '@hcengineering/platfor import { plugin, Metadata } from '@hcengineering/platform' import { SupportClientFactory, SupportConversation, SupportSystem } from './types' -export * from './types' +export type * from './types' export { deleteSupportConversation, updateSupportConversation } from './utils' export const supportLink = 'https://link.huly.io/slack' diff --git a/plugins/survey-assets/.eslintrc.js b/plugins/survey-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/survey-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/survey-assets/eslint.config.mjs b/plugins/survey-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/survey-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/survey-assets/package.json b/plugins/survey-assets/package.json index 27001ab2f2..0407af3551 100644 --- a/plugins/survey-assets/package.json +++ b/plugins/survey-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -61,8 +61,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/survey-assets/src/index.ts b/plugins/survey-assets/src/index.ts index 53f41ec1ed..94a133a0e7 100644 --- a/plugins/survey-assets/src/index.ts +++ b/plugins/survey-assets/src/index.ts @@ -1,5 +1,6 @@ // // Copyright © 2020 Anticrm Platform Contributors. +// Copyright © 2026 TraceX SAS. // // Licensed under the Eclipse Public License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. You may @@ -14,6 +15,7 @@ // import { addStringsLoader, loadMetadata } from '@hcengineering/platform' +import { loadLang } from './lang' import survey, { surveyId } from '@hcengineering/survey' const icons = require('../assets/icons.svg') as string // eslint-disable-line @@ -32,4 +34,4 @@ loadMetadata(survey.icon, { ValidateFail: `${icons}#validate-fail`, ValidateOk: `${icons}#validate-ok` }) -addStringsLoader(surveyId, async (lang: string) => await import(`../lang/${lang}.json`)) +addStringsLoader(surveyId, loadLang) diff --git a/plugins/survey-assets/src/lang.ts b/plugins/survey-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/survey-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/survey-resources/.eslintrc.js b/plugins/survey-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/survey-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/survey-resources/eslint.config.mjs b/plugins/survey-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/survey-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/survey-resources/package.json b/plugins/survey-resources/package.json index 241453a4ef..a87ec27dfb 100644 --- a/plugins/survey-resources/package.json +++ b/plugins/survey-resources/package.json @@ -20,22 +20,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/survey-resources/src/components/CreateSurvey.svelte b/plugins/survey-resources/src/components/CreateSurvey.svelte index 1724db0fa9..ca28861ac0 100644 --- a/plugins/survey-resources/src/components/CreateSurvey.svelte +++ b/plugins/survey-resources/src/components/CreateSurvey.svelte @@ -30,11 +30,11 @@ const id = generateId() - export function canClose (): boolean { + export function canClose(): boolean { return name === '' } - async function createSurvey (): Promise { + async function createSurvey(): Promise { const data: Data = { name, prompt: '' diff --git a/plugins/survey-resources/src/components/EditPoll.svelte b/plugins/survey-resources/src/components/EditPoll.svelte index 1ac5aa18b2..efabc1ebbc 100644 --- a/plugins/survey-resources/src/components/EditPoll.svelte +++ b/plugins/survey-resources/src/components/EditPoll.svelte @@ -31,11 +31,11 @@ $: updateCanSubmit(isAnswered) - function updateCanSubmit (isAnswered: boolean[]): void { + function updateCanSubmit(isAnswered: boolean[]): void { canSubmit = isAnswered.every((yes) => yes) } - function isQuestionValid (question: Question): boolean { + function isQuestionValid(question: Question): boolean { if (!hasText(question.name)) { return false } @@ -47,11 +47,11 @@ return true } - function handleChange (patch: Partial): void { + function handleChange(patch: Partial): void { dispatch('change', patch) } - function handleQuestionChange (index: number, patch: Partial): Promise | void { + function handleQuestionChange(index: number, patch: Partial): Promise | void { const questions = (object.questions ?? []).slice() questions[index] = { ...questions[index], ...patch } handleChange({ questions }) diff --git a/plugins/survey-resources/src/components/EditPollPanel.svelte b/plugins/survey-resources/src/components/EditPollPanel.svelte index 29c76adef6..ca91c7d6c6 100644 --- a/plugins/survey-resources/src/components/EditPollPanel.svelte +++ b/plugins/survey-resources/src/components/EditPollPanel.svelte @@ -42,7 +42,7 @@ patch: Partial } - function combinedPatch (patches: Patch[]): Partial { + function combinedPatch(patches: Patch[]): Partial { return patches.reduce((r, c) => Object.assign(r, c.patch), {}) } @@ -60,7 +60,7 @@ $: void queryObject(_id) - async function queryObject (_id: Ref): Promise { + async function queryObject(_id: Ref): Promise { await flush() objectState = undefined patches = [] @@ -69,7 +69,7 @@ }) } - async function submit (): Promise { + async function submit(): Promise { if (object === undefined) { return } @@ -90,14 +90,14 @@ await getClient().updateDoc(object._class, object.space, object._id, { isCompleted: true }) } - function handleChange (patch: Partial): void { + function handleChange(patch: Partial): void { patches = [...patches, { id: patchCounter++, patch }] throttle.call(() => { void flush() }) } - async function flush (): Promise { + async function flush(): Promise { if (!object?._id || patches.length < 1) return const patchesToApply = patches.slice() diff --git a/plugins/survey-resources/src/components/EditQuestion.svelte b/plugins/survey-resources/src/components/EditQuestion.svelte index 9370aa4d64..23c107ba56 100644 --- a/plugins/survey-resources/src/components/EditQuestion.svelte +++ b/plugins/survey-resources/src/components/EditQuestion.svelte @@ -57,11 +57,11 @@ let hovered: boolean = false - function handleChange (patch: Partial): void { + function handleChange(patch: Partial): void { dispatch('change', patch) } - function flush (): void { + function flush(): void { if (isNewQuestion) return const patch: Partial = {} @@ -85,7 +85,7 @@ handleChange({ name: inputName }) } - function changeOption (index: number): void { + function changeOption(index: number): void { if (inputOptions[index]?.trim()?.length === 0) { deleteOption(index) } else { @@ -93,7 +93,7 @@ } } - function addOption (): void { + function addOption(): void { if (inputNewOption.trim().length === 0) { inputNewOption = '' return @@ -103,12 +103,12 @@ handleChange({ options: inputOptions }) } - function deleteOption (index: number): void { + function deleteOption(index: number): void { inputOptions = inputOptions.filter((val, idx) => idx !== index) handleChange({ options: inputOptions }) } - function showQuestionParams (ev: MouseEvent): void { + function showQuestionParams(ev: MouseEvent): void { hovered = true showPopup( SelectPopup, @@ -196,7 +196,7 @@ ) } - function showOptionParams (ev: MouseEvent, index: number): void { + function showOptionParams(ev: MouseEvent, index: number): void { hovered = true showPopup( SelectPopup, @@ -232,7 +232,7 @@ let draggedOverIndex: number | undefined const draggableElements: HTMLElement[] = [] - function onOptionDragStart (ev: DragEvent, index: number): void { + function onOptionDragStart(ev: DragEvent, index: number): void { if (readonly || ev.dataTransfer === null) { return } @@ -245,7 +245,7 @@ ) } - function onOptionDragOver (ev: DragEvent, index: number): void { + function onOptionDragOver(ev: DragEvent, index: number): void { if (draggedIndex === undefined || draggedIndex === draggedOverIndex || draggedIndex + 1 === draggedOverIndex) { return } @@ -253,7 +253,7 @@ draggedOverIndex = index } - function onOptionDragLeave (ev: DragEvent, index: number): void { + function onOptionDragLeave(ev: DragEvent, index: number): void { if (draggedIndex === undefined) { return } @@ -263,7 +263,7 @@ } } - function onOptionDrop (): void { + function onOptionDrop(): void { if (draggedIndex === undefined || draggedOverIndex === undefined) { return } @@ -279,7 +279,7 @@ handleChange({ options: inputOptions }) } - function onOptionDragEnd (): void { + function onOptionDragEnd(): void { draggedIndex = undefined draggedOverIndex = undefined } @@ -287,7 +287,7 @@ let isRootDragging = false let rootElement: HTMLElement - function onRootDragStart (ev: DragEvent): void { + function onRootDragStart(ev: DragEvent): void { if (readonly || ev.dataTransfer === null) { return } @@ -301,12 +301,12 @@ dispatch('dragStart') } - function onRootDragEnd (): void { + function onRootDragEnd(): void { isRootDragging = false dispatch('dragEnd') } - export function focusQuestion (): void { + export function focusQuestion(): void { inputNameEditBox.focusInput() } diff --git a/plugins/survey-resources/src/components/EditSurvey.svelte b/plugins/survey-resources/src/components/EditSurvey.svelte index 52c4347e6a..d27ba2bb04 100644 --- a/plugins/survey-resources/src/components/EditSurvey.svelte +++ b/plugins/survey-resources/src/components/EditSurvey.svelte @@ -41,11 +41,11 @@ let newQuestionComponent: EditQuestion const questionComponents: EditQuestion[] = [] - function handleChange (patch: Partial): void { + function handleChange(patch: Partial): void { dispatch('change', patch) } - function deleteQuestion (index: number): void { + function deleteQuestion(index: number): void { if (!object.questions?.[index]) return showPopup( MessageBox, @@ -64,7 +64,7 @@ ) } - function handleNewQuestionChange (patch: Partial): void { + function handleNewQuestionChange(patch: Partial): void { const question = { ...newQuestion, ...patch } let questions = object.questions ?? [] @@ -75,7 +75,7 @@ handleChange({ questions }) } - function handleQuestionChange (index: number, patch: Partial): Promise | void { + function handleQuestionChange(index: number, patch: Partial): Promise | void { const questions = (object.questions ?? []).slice() questions[index] = { ...questions[index], ...patch } handleChange({ questions }) @@ -84,7 +84,7 @@ let draggedIndex: number | undefined = undefined let draggedOverIndex: number | undefined = undefined - function onQuestionDragOver (ev: DragEvent, index: number): void { + function onQuestionDragOver(ev: DragEvent, index: number): void { if (draggedIndex === undefined || draggedIndex === draggedOverIndex || draggedIndex + 1 === draggedOverIndex) { return } @@ -92,14 +92,14 @@ draggedOverIndex = index } - function onQuestionDragLeave (ev: DragEvent, index: number): void { + function onQuestionDragLeave(ev: DragEvent, index: number): void { if (draggedIndex === undefined) return ev.preventDefault() if (draggedOverIndex === index) draggedOverIndex = undefined } - function onQuestionDrop (): void { + function onQuestionDrop(): void { if (draggedIndex === undefined || draggedOverIndex === undefined) { return } diff --git a/plugins/survey-resources/src/components/EditSurveyPanel.svelte b/plugins/survey-resources/src/components/EditSurveyPanel.svelte index 8a25ab0ca8..8f09cbcf04 100644 --- a/plugins/survey-resources/src/components/EditSurveyPanel.svelte +++ b/plugins/survey-resources/src/components/EditSurveyPanel.svelte @@ -53,7 +53,7 @@ patch: Partial } - function combinedPatch (patches: Patch[]): Partial { + function combinedPatch(patches: Patch[]): Partial { return patches.reduce((r, c) => Object.assign(r, c.patch), {}) } @@ -69,7 +69,7 @@ $: void queryObject(_id) $: poll = preview && object !== undefined ? makePollData(object) : undefined - async function queryObject (_id: Ref): Promise { + async function queryObject(_id: Ref): Promise { await flush() objectState = undefined patches = [] @@ -78,14 +78,14 @@ }) } - function handleChange (patch: Partial): void { + function handleChange(patch: Partial): void { patches = [...patches, { id: patchCounter++, patch }] throttle.call(() => { void flush() }) } - async function flush (): Promise { + async function flush(): Promise { if (!object?._id || patches.length < 1) return const patchesToApply = patches.slice() diff --git a/plugins/survey-resources/src/components/PollCollection.svelte b/plugins/survey-resources/src/components/PollCollection.svelte index 19e5ee360e..c6ba4e27fd 100644 --- a/plugins/survey-resources/src/components/PollCollection.svelte +++ b/plugins/survey-resources/src/components/PollCollection.svelte @@ -36,7 +36,7 @@ let viewlet: Viewlet | undefined let preference: ViewletPreference | undefined - function selectSurvey (ev: MouseEvent): void { + function selectSurvey(ev: MouseEvent): void { showPopup(SurveyPopup, {}, ev.target as HTMLElement, async (result) => { if (result != null) { await createPoll(result as Survey) @@ -44,7 +44,7 @@ }) } - async function createPoll (source: Survey): Promise { + async function createPoll(source: Survey): Promise { const client = getClient() const pollId = await client.addCollection(survey.class.Poll, space, objectId, _class, 'polls', makePollData(source)) diff --git a/plugins/survey-resources/src/components/PollQuestion.svelte b/plugins/survey-resources/src/components/PollQuestion.svelte index 80ea7e7435..bce2ef3d52 100644 --- a/plugins/survey-resources/src/components/PollQuestion.svelte +++ b/plugins/survey-resources/src/components/PollQuestion.svelte @@ -47,7 +47,7 @@ $: syncInputState(question) $: validateAnswer(question, input) - function flush (): void { + function flush(): void { const patch: Partial = {} let haveChanges = false @@ -62,7 +62,7 @@ } onDestroy(flush) - function syncInputState (question: AnsweredQuestion): void { + function syncInputState(question: AnsweredQuestion): void { const current = extractCurrentAnswerSet(input) if (isSameAnswers(current, question)) return @@ -82,11 +82,11 @@ } } - function validateAnswer (question: AnsweredQuestion, input: InputState): void { + function validateAnswer(question: AnsweredQuestion, input: InputState): void { isAnswered = isValidAnswer(question, input) } - function isValidAnswer (question: AnsweredQuestion, input: InputState): boolean { + function isValidAnswer(question: AnsweredQuestion, input: InputState): boolean { if (!question.isMandatory) return true switch (question.kind) { @@ -101,11 +101,11 @@ } } - function handleChange (patch: Partial): void { + function handleChange(patch: Partial): void { dispatch('change', patch) } - function handleAnswerChange (): void { + function handleAnswerChange(): void { const patch = extractCurrentAnswerSet(input) handleChange(patch) } @@ -115,11 +115,11 @@ answers?: number[] } - function isSameAnswers (a1: AnswerSet, a2: AnswerSet): boolean { + function isSameAnswers(a1: AnswerSet, a2: AnswerSet): boolean { return (a1.answer ?? null) === (a2.answer ?? null) && deepEqual(a1.answers ?? null, a2.answers ?? null) } - function extractCurrentAnswerSet (input: InputState): AnswerSet { + function extractCurrentAnswerSet(input: InputState): AnswerSet { switch (question.kind) { case QuestionKind.STRING: { const answer = hasText(input.answer) ? input.answer : undefined @@ -144,7 +144,7 @@ } } - function getReadonlyAnswers (): string[] { + function getReadonlyAnswers(): string[] { switch (question.kind) { case QuestionKind.STRING: return [input.answer.trim()] diff --git a/plugins/survey-resources/src/utils.ts b/plugins/survey-resources/src/utils.ts index 85348f57a2..a30f5bbd11 100644 --- a/plugins/survey-resources/src/utils.ts +++ b/plugins/survey-resources/src/utils.ts @@ -13,7 +13,7 @@ // limitations under the License. // -import { clone, type Class, type Client, type Doc, type Ref } from '@hcengineering/core' +import { clone, type Client, type Doc, type Ref } from '@hcengineering/core' import survey, { surveyId, type Poll, type PollData, type Survey } from '@hcengineering/survey' import { getClient, MessageBox } from '@hcengineering/presentation' import { @@ -24,7 +24,7 @@ import { showPopup } from '@hcengineering/ui' import { accessDeniedStore } from '@hcengineering/view-resources' -import view from '@hcengineering/view' +import view, { type ObjectPanel } from '@hcengineering/view' export function hasText (value: string | undefined | null): boolean { return typeof value === 'string' && value.trim().length > 0 @@ -52,7 +52,7 @@ export async function generateSurveyLocation (loc: Location, id: Ref): P const appComponent = loc.path[0] ?? '' const workspace = loc.path[1] ?? '' - const objectPanel = client.getHierarchy().classHierarchyMixin(doc._class as Ref>, view.mixin.ObjectPanel) + const objectPanel = client.getHierarchy().classHierarchyMixin(doc._class, view.mixin.ObjectPanel) const component = objectPanel?.component ?? view.component.EditDoc return { @@ -80,7 +80,7 @@ export async function generatePollLocation (loc: Location, id: Ref): Promi const workspace = loc.path[1] ?? '' const appId = loc.path[2] ?? '' - const objectPanel = client.getHierarchy().classHierarchyMixin(doc._class as Ref>, view.mixin.ObjectPanel) + const objectPanel = client.getHierarchy().classHierarchyMixin(doc._class, view.mixin.ObjectPanel) const component = objectPanel?.component ?? view.component.EditDoc return { diff --git a/plugins/survey/.eslintrc.js b/plugins/survey/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/survey/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/survey/eslint.config.mjs b/plugins/survey/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/survey/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/survey/package.json b/plugins/survey/package.json index 38511ab1d0..f72c76b8fa 100644 --- a/plugins/survey/package.json +++ b/plugins/survey/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/tags-assets/.eslintrc.js b/plugins/tags-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/tags-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/tags-assets/eslint.config.mjs b/plugins/tags-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/tags-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/tags-assets/package.json b/plugins/tags-assets/package.json index 8cae5752d3..c08035964b 100644 --- a/plugins/tags-assets/package.json +++ b/plugins/tags-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/tags-assets/src/lang.ts b/plugins/tags-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/tags-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/tags-resources/.eslintrc.js b/plugins/tags-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/tags-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/tags-resources/eslint.config.mjs b/plugins/tags-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/tags-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/tags-resources/package.json b/plugins/tags-resources/package.json index 5f07189659..648e9193bb 100644 --- a/plugins/tags-resources/package.json +++ b/plugins/tags-resources/package.json @@ -20,22 +20,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/tags-resources/src/components/CategoryBar.svelte b/plugins/tags-resources/src/components/CategoryBar.svelte index 2a50efd081..e907a88091 100644 --- a/plugins/tags-resources/src/components/CategoryBar.svelte +++ b/plugins/tags-resources/src/components/CategoryBar.svelte @@ -100,7 +100,7 @@ dispatch('change', { category, elements: selected }) } - function selectTag (evt: Event, category: TagCategory): void { + function selectTag(evt: Event, category: TagCategory): void { showPopup( TagsCategoryPopup, { diff --git a/plugins/tags-resources/src/components/CreateTagElement.svelte b/plugins/tags-resources/src/components/CreateTagElement.svelte index 9da78502ae..cc18c1a42c 100644 --- a/plugins/tags-resources/src/components/CreateTagElement.svelte +++ b/plugins/tags-resources/src/components/CreateTagElement.svelte @@ -56,7 +56,7 @@ category = findTagCategory(title, categories) } - export function canClose (): boolean { + export function canClose(): boolean { return title === '' } @@ -76,7 +76,7 @@ categoryItems = newItems }) - async function createTagElementFnc (): Promise { + async function createTagElementFnc(): Promise { const res = await createTagElement(title, targetClass, category, description, color, keyTitle) dispatch('close', res) } diff --git a/plugins/tags-resources/src/components/DocTagsEditor.svelte b/plugins/tags-resources/src/components/DocTagsEditor.svelte index 1cec1cf691..9d0c28a33f 100644 --- a/plugins/tags-resources/src/components/DocTagsEditor.svelte +++ b/plugins/tags-resources/src/components/DocTagsEditor.svelte @@ -40,7 +40,7 @@ items = result }) - async function click (evt: MouseEvent): Promise { + async function click(evt: MouseEvent): Promise { pressed = true showPopup( TagsEditorPopup, @@ -58,7 +58,7 @@ ) } - async function removeTag (tag: TagReference): Promise { + async function removeTag(tag: TagReference): Promise { if (tag !== undefined) await client.remove(tag) } diff --git a/plugins/tags-resources/src/components/DraftTagsEditor.svelte b/plugins/tags-resources/src/components/DraftTagsEditor.svelte index 24ad0342b2..a37c4ccd06 100644 --- a/plugins/tags-resources/src/components/DraftTagsEditor.svelte +++ b/plugins/tags-resources/src/components/DraftTagsEditor.svelte @@ -28,12 +28,12 @@ const dispatch = createEventDispatcher() - function removeTag (tag: TagReference) { + function removeTag(tag: TagReference) { tags = tags.filter((t) => t !== tag) dispatch('change', tags) } - function click (evt: MouseEvent) { + function click(evt: MouseEvent) { showPopup( DraftTagsPopup, { targetClass, tags }, diff --git a/plugins/tags-resources/src/components/DraftTagsPopup.svelte b/plugins/tags-resources/src/components/DraftTagsPopup.svelte index 48b56c97ec..80a3bd7ca7 100644 --- a/plugins/tags-resources/src/components/DraftTagsPopup.svelte +++ b/plugins/tags-resources/src/components/DraftTagsPopup.svelte @@ -24,7 +24,7 @@ $: selected = tags.map((p) => p.tag) const dispatch = createEventDispatcher() - async function addRef ({ title, color, _id: tag }: TagElement): Promise { + async function addRef({ title, color, _id: tag }: TagElement): Promise { tags = [ ...tags, { @@ -36,12 +36,12 @@ dispatch('update', tags) } - async function removeTag (tag: TagElement): Promise { + async function removeTag(tag: TagElement): Promise { tags = tags.filter((t) => t.tag !== tag._id) dispatch('update', tags) } - async function onUpdate (event: CustomEvent<{ action: string, tag: TagElement }>) { + async function onUpdate(event: CustomEvent<{ action: string, tag: TagElement }>) { const result = event.detail if (result === undefined) return if (result.action === 'add') addRef(result.tag) diff --git a/plugins/tags-resources/src/components/EditTagElement.svelte b/plugins/tags-resources/src/components/EditTagElement.svelte index cdc00c7e87..4677f5f3f2 100644 --- a/plugins/tags-resources/src/components/EditTagElement.svelte +++ b/plugins/tags-resources/src/components/EditTagElement.svelte @@ -45,7 +45,7 @@ category: value.category } - async function updateElement () { + async function updateElement() { const documentUpdate: DocumentUpdate = {} const refUpdate: DocumentUpdate = {} diff --git a/plugins/tags-resources/src/components/LabelsPresenter.svelte b/plugins/tags-resources/src/components/LabelsPresenter.svelte index e09f2aa8c8..9ff72df8a0 100644 --- a/plugins/tags-resources/src/components/LabelsPresenter.svelte +++ b/plugins/tags-resources/src/components/LabelsPresenter.svelte @@ -28,7 +28,7 @@ $: update(object, value) - function update (object: WithLookup, value: number) { + function update(object: WithLookup, value: number) { if (value > 0) { query.query(tags.class.TagReference, { attachedTo: object._id }, (result) => { items = result.slice(ignoreFirst ? 1 : 0) @@ -39,7 +39,7 @@ } } - async function tagsHandler (evt: MouseEvent): Promise { + async function tagsHandler(evt: MouseEvent): Promise { showPopup(TagsEditorPopup, { object }, getEventPopupPositionElement(evt), undefined, undefined, { refId: 'TagsPopup', category: 'popup', diff --git a/plugins/tags-resources/src/components/ObjectsTagsEditorPopup.svelte b/plugins/tags-resources/src/components/ObjectsTagsEditorPopup.svelte index c5634d8d17..dc592024e7 100644 --- a/plugins/tags-resources/src/components/ObjectsTagsEditorPopup.svelte +++ b/plugins/tags-resources/src/components/ObjectsTagsEditorPopup.svelte @@ -42,7 +42,7 @@ }) const client = getClient() - async function addRef ({ title, color, _id: tag }: TagElement): Promise { + async function addRef({ title, color, _id: tag }: TagElement): Promise { await Promise.all( objects.map(async (object) => { if (tagRefs.findIndex((p) => p.attachedTo === object._id && p.tag === tag) !== -1) return @@ -55,7 +55,7 @@ }) ) } - async function removeTag (tag: TagElement): Promise { + async function removeTag(tag: TagElement): Promise { await Promise.all( objects.map(async (object) => { const tagRef = await client.findOne(tags.class.TagReference, { attachedTo: object._id, tag: tag._id }) @@ -63,7 +63,7 @@ }) ) } - async function onUpdate (event: CustomEvent<{ action: string, tag: TagElement }>) { + async function onUpdate(event: CustomEvent<{ action: string, tag: TagElement }>) { const result = event.detail if (result === undefined) return if (result.action === 'add') addRef(result.tag) diff --git a/plugins/tags-resources/src/components/Tags.svelte b/plugins/tags-resources/src/components/Tags.svelte index eff37b91bd..6db13f7a2a 100644 --- a/plugins/tags-resources/src/components/Tags.svelte +++ b/plugins/tags-resources/src/components/Tags.svelte @@ -38,7 +38,7 @@ { sort: { weight: -1, title: 1 } } ) - async function addRef (tag: TagElement): Promise { + async function addRef(tag: TagElement): Promise { await client.addCollection(tags.class.TagReference, object.space, object._id, _class, key.key, { title: tag.title, tag: tag._id, @@ -46,11 +46,11 @@ }) } - async function removeTag (id: Ref): Promise { + async function removeTag(id: Ref): Promise { await client.removeCollection(tags.class.TagReference, object.space, id, object._id, _class, key.key) } - async function updateWeight (tag: TagReference, weight: TagReference['weight']): Promise { + async function updateWeight(tag: TagReference, weight: TagReference['weight']): Promise { await client.update(tag, { weight }) } diff --git a/plugins/tags-resources/src/components/TagsAttributeEditor.svelte b/plugins/tags-resources/src/components/TagsAttributeEditor.svelte index 951d314e61..0f0bcd38c9 100644 --- a/plugins/tags-resources/src/components/TagsAttributeEditor.svelte +++ b/plugins/tags-resources/src/components/TagsAttributeEditor.svelte @@ -25,7 +25,7 @@ $: query.query(tags.class.TagReference, { attachedTo: object._id }, (result) => { items = result }) - async function tagsHandler (evt: MouseEvent): Promise { + async function tagsHandler(evt: MouseEvent): Promise { if (readonly) return showPopup(TagsEditorPopup, { object, targetClass }, getEventPopupPositionElement(evt), undefined, undefined, { refId: 'TagsPopup', @@ -33,7 +33,7 @@ overlay: true }) } - async function removeTag (tag: TagReference): Promise { + async function removeTag(tag: TagReference): Promise { if (tag !== undefined) { await client.remove(tag) const id = await getObjectId(object, hierarchy) diff --git a/plugins/tags-resources/src/components/TagsDropdownEditor.svelte b/plugins/tags-resources/src/components/TagsDropdownEditor.svelte index e8c9e7a871..5ce5049930 100644 --- a/plugins/tags-resources/src/components/TagsDropdownEditor.svelte +++ b/plugins/tags-resources/src/components/TagsDropdownEditor.svelte @@ -48,10 +48,10 @@ keyLabel = v }) - async function addRef (tag: TagElement): Promise { + async function addRef(tag: TagElement): Promise { dispatch('open', tag) } - async function addTag (evt: Event): Promise { + async function addTag(evt: Event): Promise { showPopup( TagsPopup, { @@ -79,7 +79,7 @@ ) } - async function removeTag (tag: TagElement): Promise { + async function removeTag(tag: TagElement): Promise { dispatch('delete', tag) } diff --git a/plugins/tags-resources/src/components/TagsEditor.svelte b/plugins/tags-resources/src/components/TagsEditor.svelte index f4c10e6f76..2e97ad4254 100644 --- a/plugins/tags-resources/src/components/TagsEditor.svelte +++ b/plugins/tags-resources/src/components/TagsEditor.svelte @@ -74,10 +74,10 @@ { items: initial, label: tags.string.Initial } ] - async function addRef (tag: TagElement): Promise { + async function addRef(tag: TagElement): Promise { dispatch('open', tag) } - async function addTag (evt: Event): Promise { + async function addTag(evt: Event): Promise { showPopup( TagsPopup, { @@ -102,7 +102,7 @@ ) } - async function removeTag (id: Ref): Promise { + async function removeTag(id: Ref): Promise { dispatch('delete', id) } diff --git a/plugins/tags-resources/src/components/TagsEditorPopup.svelte b/plugins/tags-resources/src/components/TagsEditorPopup.svelte index 9be7ce487d..47a65d7b55 100644 --- a/plugins/tags-resources/src/components/TagsEditorPopup.svelte +++ b/plugins/tags-resources/src/components/TagsEditorPopup.svelte @@ -31,7 +31,7 @@ }) const client = getClient() const hierarchy = client.getHierarchy() - async function addRef ({ title, color, _id: tag }: TagElement): Promise { + async function addRef({ title, color, _id: tag }: TagElement): Promise { // check if tag already attached, could happen if 'add' clicked faster than ui updates const containsTag = selected.some((refElement) => refElement === tag) if (containsTag) { @@ -49,7 +49,7 @@ Analytics.handleEvent(TagsEvents.TagCreated, { objectId: id, objectClass: object._class }) } - async function removeTag (tag: TagElement): Promise { + async function removeTag(tag: TagElement): Promise { const tagRef = await client.findOne(tags.class.TagReference, { tag: tag._id, attachedTo: object._id }) if (tagRef) { await client.remove(tagRef) @@ -59,7 +59,7 @@ } } - async function onUpdate (event: CustomEvent<{ action: string, tag: TagElement }>) { + async function onUpdate(event: CustomEvent<{ action: string, tag: TagElement }>) { const result = event.detail if (result === undefined) return if (result.action === 'add') addRef(result.tag) diff --git a/plugins/tags-resources/src/components/TagsFilter.svelte b/plugins/tags-resources/src/components/TagsFilter.svelte index b1e2785606..59bce92445 100644 --- a/plugins/tags-resources/src/components/TagsFilter.svelte +++ b/plugins/tags-resources/src/components/TagsFilter.svelte @@ -65,7 +65,7 @@ let objectsPromise: Promise> | undefined let queryId = 0 - async function getValues (search: string): Promise { + async function getValues(search: string): Promise { const qid = ++queryId const resultQuery = search !== '' @@ -112,7 +112,7 @@ return false } - function handleFilterToggle (element: TagElement): void { + function handleFilterToggle(element: TagElement): void { if (isSelected(element)) { selected = selected.filter((p) => p !== element._id) } else { @@ -124,7 +124,7 @@ updateFilter(selected, level) } - function updateFilter (newValues: Ref[], newLevel: number) { + function updateFilter(newValues: Ref[], newLevel: number) { clearTimeout(filterUpdateTimeout) filterUpdateTimeout = setTimeout(() => { diff --git a/plugins/tags-resources/src/components/TagsPopup.svelte b/plugins/tags-resources/src/components/TagsPopup.svelte index 517413896d..ada1bd214b 100644 --- a/plugins/tags-resources/src/components/TagsPopup.svelte +++ b/plugins/tags-resources/src/components/TagsPopup.svelte @@ -69,7 +69,7 @@ objects = newElements.concat(result) }) - async function onCreateTagElement (res: Ref | undefined | null): Promise { + async function onCreateTagElement(res: Ref | undefined | null): Promise { if (res == null) return const tag = await getClient().findOne(tags.class.TagElement, { _id: res }) dispatch('update', { action: 'add', tag }) @@ -77,11 +77,11 @@ inProcess = false } - async function createTagElementPopup (): Promise { + async function createTagElementPopup(): Promise { showPopup(CreateTagElement, { targetClass, title: search }, 'top', onCreateTagElement) } - async function createTagElementQuick (): Promise { + async function createTagElementQuick(): Promise { const res = await createTagElement( search, targetClass, @@ -124,7 +124,7 @@ return r } - async function onSearchKeydown (ev: KeyboardEvent): Promise { + async function onSearchKeydown(ev: KeyboardEvent): Promise { if (ev.code !== 'Enter') return if (!inProcess && !hideAdd && objects.length < 1) { inProcess = true diff --git a/plugins/tags-resources/src/components/TagsView.svelte b/plugins/tags-resources/src/components/TagsView.svelte index e7ed1280c2..1e4fb07347 100644 --- a/plugins/tags-resources/src/components/TagsView.svelte +++ b/plugins/tags-resources/src/components/TagsView.svelte @@ -49,14 +49,14 @@ let search = '' let resultQuery: DocumentQuery = { targetClass } - function updateResultQuery (search: string, category?: Ref): void { + function updateResultQuery(search: string, category?: Ref): void { resultQuery = search === '' ? { targetClass } : { $search: search, targetClass } if (category !== undefined) { resultQuery.category = category } } - function showCreateDialog () { + function showCreateDialog() { showPopup(CreateTagElement, { targetClass, keyTitle }, 'top') } const opt: FindOptions = { diff --git a/plugins/tags/.eslintrc.js b/plugins/tags/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/tags/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/tags/eslint.config.mjs b/plugins/tags/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/tags/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/tags/package.json b/plugins/tags/package.json index 12b06e502c..a849d57d05 100644 --- a/plugins/tags/package.json +++ b/plugins/tags/package.json @@ -24,18 +24,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/task-assets/.eslintrc.js b/plugins/task-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/task-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/task-assets/eslint.config.mjs b/plugins/task-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/task-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/task-assets/package.json b/plugins/task-assets/package.json index f6a2e38b27..0657f00d63 100644 --- a/plugins/task-assets/package.json +++ b/plugins/task-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/task-assets/src/lang.ts b/plugins/task-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/task-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/task-resources/.eslintrc.js b/plugins/task-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/task-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/task-resources/eslint.config.mjs b/plugins/task-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/task-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/task-resources/package.json b/plugins/task-resources/package.json index c0f894786c..4b02ce548b 100644 --- a/plugins/task-resources/package.json +++ b/plugins/task-resources/package.json @@ -20,22 +20,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/plugins/task-resources/src/components/AssignedTasks.svelte b/plugins/task-resources/src/components/AssignedTasks.svelte index 0162428f7d..fda09f9172 100644 --- a/plugins/task-resources/src/components/AssignedTasks.svelte +++ b/plugins/task-resources/src/components/AssignedTasks.svelte @@ -60,7 +60,7 @@ $: mode = $resolvedLocationStore.query?.mode ?? undefined let searchQuery: DocumentQuery = { baseQuery } - function updateSearchQuery (search: string): void { + function updateSearchQuery(search: string): void { searchQuery = search === '' ? { ...baseQuery } : { ...baseQuery, $search: search } } $: if (baseQuery) updateSearchQuery(search) @@ -69,7 +69,7 @@ let loading = true let preference: ViewletPreference | undefined - function updateResultQuery (search: string, doneStates: Status[], mode: string | undefined): void { + function updateResultQuery(search: string, doneStates: Status[], mode: string | undefined): void { if (mode === 'assigned') { resultQuery.status = { $nin: doneStates.map((it) => it._id) } } @@ -80,7 +80,7 @@ ) const subscribedQuery = createQuery() - function getSubscribed (): void { + function getSubscribed(): void { subscribedQuery.query( _class, { 'notification:mixin:Collaborators.collaborators': { $in: getCurrentAccount().socialIds } }, diff --git a/plugins/task-resources/src/components/CreateFilterPopup.svelte b/plugins/task-resources/src/components/CreateFilterPopup.svelte index 83d53d40bf..e3cab74f08 100644 --- a/plugins/task-resources/src/components/CreateFilterPopup.svelte +++ b/plugins/task-resources/src/components/CreateFilterPopup.svelte @@ -21,13 +21,13 @@ const dispatch = createEventDispatcher() - function click (value: Timestamp | undefined): void { + function click(value: Timestamp | undefined): void { closeTooltip() dispatch('close', value) } const today = new Date().setHours(0, 0, 0, 0) - function shiftDays (diff: number): number { + function shiftDays(diff: number): number { return new Date(today).setDate(new Date(today).getDate() - diff) } diff --git a/plugins/task-resources/src/components/Dashboard.svelte b/plugins/task-resources/src/components/Dashboard.svelte index 3376dde2b9..993094daed 100644 --- a/plugins/task-resources/src/components/Dashboard.svelte +++ b/plugins/task-resources/src/components/Dashboard.svelte @@ -33,7 +33,7 @@ $: states = getStates(project, $typeStore, $statusStore.byId) - function updateStates (space: Ref): void { + function updateStates(space: Ref): void { statesQuery.query(task.class.Project, { _id: space }, (result) => { project = result[0] }) @@ -43,7 +43,7 @@ let ids: Ref[] = [] const txQuery = createQuery() - function updateTxes (_class: Ref>, space: Ref, modified: Timestamp | undefined): void { + function updateTxes(_class: Ref>, space: Ref, modified: Timestamp | undefined): void { if (modified === undefined) { ids = [] return @@ -77,7 +77,7 @@ $: group(tasks, $statusStore.byId) - function group (tasks: Task[], statuses: IdMap): void { + function group(tasks: Task[], statuses: IdMap): void { const template = new Map, DashboardItem>( states.map((p) => { return [ @@ -109,7 +109,7 @@ items = Array.from(template.values()) } - function updateDocs (_class: Ref>, states: Status[], query: DocumentQuery): void { + function updateDocs(_class: Ref>, states: Status[], query: DocumentQuery): void { if (states.length === 0) { return } diff --git a/plugins/task-resources/src/components/StatusFilter.svelte b/plugins/task-resources/src/components/StatusFilter.svelte index 1c1fd55791..34f8ecac5f 100644 --- a/plugins/task-resources/src/components/StatusFilter.svelte +++ b/plugins/task-resources/src/components/StatusFilter.svelte @@ -63,7 +63,7 @@ let filterUpdateTimeout: any | undefined - async function getValues ( + async function getValues( search: string, selectedType: Ref | undefined, typeStore: IdMap, @@ -141,7 +141,7 @@ objectsPromise = undefined } - async function sort (statuses: Status[]): Promise { + async function sort(statuses: Status[]): Promise { const categories = toIdMap(await client.findAll(core.class.StatusCategory, {})) statuses.sort((a, b) => { if (a.category !== undefined && b.category !== undefined && a.category !== b.category) { @@ -157,11 +157,11 @@ return statuses } - function isSelected (value: Doc | undefined | null, values: any[]): boolean { + function isSelected(value: Doc | undefined | null, values: any[]): boolean { return values.includes(value?._id ?? value) } - function handleFilterToggle (value: any): void { + function handleFilterToggle(value: any): void { if (isSelected(value, filter.value)) { filter.value = filter.value.filter((p) => (value ? p !== value._id : p != null)) } else { @@ -175,7 +175,7 @@ updateFilter() } - function updateFilter (): void { + function updateFilter(): void { clearTimeout(filterUpdateTimeout) filterUpdateTimeout = setTimeout(() => { diff --git a/plugins/task-resources/src/components/StatusSelector.svelte b/plugins/task-resources/src/components/StatusSelector.svelte index 4d04734d5d..6f59ee744d 100644 --- a/plugins/task-resources/src/components/StatusSelector.svelte +++ b/plugins/task-resources/src/components/StatusSelector.svelte @@ -39,7 +39,7 @@ Analytics.handleEvent('task.SetStatus', { status: newStatus, objects: ids }) } - async function getAnalyticsIds (docs: Task[]): Promise { + async function getAnalyticsIds(docs: Task[]): Promise { const result: string[] = [] for (const doc of docs) { @@ -61,7 +61,7 @@ : undefined : value.kind - function updateStatuses (taskTypes: IdMap, store: IdMap, kind: Ref | undefined): void { + function updateStatuses(taskTypes: IdMap, store: IdMap, kind: Ref | undefined): void { if (kind === undefined) { statuses = [] } else { diff --git a/plugins/task-resources/src/components/StatusTableView.svelte b/plugins/task-resources/src/components/StatusTableView.svelte index a7d8f6afe5..fc7d3db79d 100644 --- a/plugins/task-resources/src/components/StatusTableView.svelte +++ b/plugins/task-resources/src/components/StatusTableView.svelte @@ -46,7 +46,7 @@ let resultQuery: DocumentQuery let divScroll: HTMLElement - function getItems (doneStates: Status[]): TabItem[] { + function getItems(doneStates: Status[]): TabItem[] { const itemsDS: TabItem[] = doneStates.map((s) => { return { id: s._id, @@ -59,7 +59,7 @@ return itemsDS } - function updateConfig (config: string[]): string[] { + function updateConfig(config: string[]): string[] { if (state !== undefined) { return config.filter((p) => p !== 'status') } @@ -83,7 +83,7 @@ const client = getClient() - function updateQuery (query: DocumentQuery, selectedDoneStates: Set>): void { + function updateQuery(query: DocumentQuery, selectedDoneStates: Set>): void { resConfig = updateConfig(config) const result = client.getHierarchy().clone(query) if (state) { @@ -102,7 +102,7 @@ resultQuery = result } - function doneStateClick (id: Ref): void { + function doneStateClick(id: Ref): void { withoutDone = false if (selectedDoneStates.has(id)) selectedDoneStates.delete(id) else selectedDoneStates.add(id) @@ -116,7 +116,7 @@ updateQuery(query, selectedDoneStates) } - function noDoneClick (): void { + function noDoneClick(): void { withoutDone = true selectedDS = ['NoDoneState'] selectedDoneStates.clear() diff --git a/plugins/task-resources/src/components/TaskHeader.svelte b/plugins/task-resources/src/components/TaskHeader.svelte index 30d1c8aaaa..cc86d0b5a7 100644 --- a/plugins/task-resources/src/components/TaskHeader.svelte +++ b/plugins/task-resources/src/components/TaskHeader.svelte @@ -33,7 +33,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function change () { + function change() { client.updateCollection( object._class, object.space, @@ -47,7 +47,7 @@ $: assigneeTitle = hierarchy.getAttribute(object._class, 'assignee').label - function getAssigneeClass (object: Task): Ref> { + function getAssigneeClass(object: Task): Ref> { const attribute = hierarchy.getAttribute(object._class, 'assignee') const attrClass = attribute.type._class if (attrClass === core.class.RefTo) { diff --git a/plugins/task-resources/src/components/TypesView.svelte b/plugins/task-resources/src/components/TypesView.svelte index f2e9c036e9..f7b42b249c 100644 --- a/plugins/task-resources/src/components/TypesView.svelte +++ b/plugins/task-resources/src/components/TypesView.svelte @@ -71,7 +71,7 @@ $: searchQuery = search === '' ? query : { ...query, $search: search } $: resultQuery = searchQuery - function showCreateDialog (): void { + function showCreateDialog(): void { if (createComponent === undefined) return showPopup(createComponent, createComponentProps, 'top') } diff --git a/plugins/task-resources/src/components/kanban/KanbanView.svelte b/plugins/task-resources/src/components/kanban/KanbanView.svelte index 2b6110acce..8dfd8fac30 100644 --- a/plugins/task-resources/src/components/kanban/KanbanView.svelte +++ b/plugins/task-resources/src/components/kanban/KanbanView.svelte @@ -164,7 +164,7 @@ const queryId = generateId() - function update (): void { + function update(): void { void updateTaskKanbanCategories( client, viewlet, @@ -196,7 +196,7 @@ categories = res }) - function getHeader (_class: Ref>, groupByKey: string): void { + function getHeader(_class: Ref>, groupByKey: string): void { if (groupByKey === noCategory) { headerComponent = undefined } else { diff --git a/plugins/task-resources/src/components/projectTypes/CreateProjectType.svelte b/plugins/task-resources/src/components/projectTypes/CreateProjectType.svelte index 797c778336..532957ad56 100644 --- a/plugins/task-resources/src/components/projectTypes/CreateProjectType.svelte +++ b/plugins/task-resources/src/components/projectTypes/CreateProjectType.svelte @@ -32,7 +32,7 @@ const dispatch = createEventDispatcher() - async function createType (): Promise { + async function createType(): Promise { if (projDescriptor === undefined) { return } diff --git a/plugins/task-resources/src/components/projectTypes/ProjectTypeTasksTypeSectionEditor.svelte b/plugins/task-resources/src/components/projectTypes/ProjectTypeTasksTypeSectionEditor.svelte index 013aa1de7c..cefcbfef66 100644 --- a/plugins/task-resources/src/components/projectTypes/ProjectTypeTasksTypeSectionEditor.svelte +++ b/plugins/task-resources/src/components/projectTypes/ProjectTypeTasksTypeSectionEditor.svelte @@ -40,7 +40,7 @@ { sort: { _id: SortingOrder.Ascending } } ) - function handleTaskTypeSelected (id: string | undefined): void { + function handleTaskTypeSelected(id: string | undefined): void { const loc = getCurrentResolvedLocation() if (id !== undefined) { loc.path[5] = 'taskTypes' diff --git a/plugins/task-resources/src/components/state/CreateStatePopup.svelte b/plugins/task-resources/src/components/state/CreateStatePopup.svelte index 110091035d..0b43620579 100644 --- a/plugins/task-resources/src/components/state/CreateStatePopup.svelte +++ b/plugins/task-resources/src/components/state/CreateStatePopup.svelte @@ -103,7 +103,7 @@ value.trim() !== '' && !selectableStates.some((it) => it.name === value) - async function save (): Promise { + async function save(): Promise { if (readonly) return if (total > 0 && value.trim() !== status?.name?.trim()) { // We should ask for changes approve. @@ -125,7 +125,7 @@ } } - async function performSave (): Promise { + async function performSave(): Promise { if (_taskType === undefined || _class === undefined) return if (status === undefined) { const _id = await createState(client, _class, { @@ -229,7 +229,7 @@ icon: it.icon })) - async function renameStatuses ( + async function renameStatuses( type: ProjectType, taskType: TaskType, oldStatus: Ref, @@ -259,7 +259,7 @@ } } - function onDelete (): void { + function onDelete(): void { if (status === undefined || readonly) return const estatus = status showPopup( @@ -303,7 +303,7 @@ ) } - function onDuplicate (): void { + function onDuplicate(): void { if (readonly) return let pattern = '' let inc = 2 diff --git a/plugins/task-resources/src/components/state/StateIconPresenter.svelte b/plugins/task-resources/src/components/state/StateIconPresenter.svelte index 92113d5faa..d4b4da704a 100644 --- a/plugins/task-resources/src/components/state/StateIconPresenter.svelte +++ b/plugins/task-resources/src/components/state/StateIconPresenter.svelte @@ -53,7 +53,7 @@ ? getPlatformColorDef(viewState.color ?? category?.color ?? getColorNumberByText(viewState.name), $themeStore.dark) : undefined - function getViewState (type: ProjectType | undefined, state: Status | undefined): Status | undefined { + function getViewState(type: ProjectType | undefined, state: Status | undefined): Status | undefined { if (state === undefined) return if (type === undefined) return state const statusColor = type?.statuses?.find((p) => p._id === state._id)?.color @@ -66,12 +66,12 @@ } } - async function updateCategory (value: Status | undefined): Promise { + async function updateCategory(value: Status | undefined): Promise { if (value === undefined) return category = await client.findOne(core.class.StatusCategory, { _id: value.category }) } - async function getType (space: Ref, types: IdMap): Promise { + async function getType(space: Ref, types: IdMap): Promise { const _space = await client.findOne(task.class.Project, { _id: space }) if (_space === undefined) { type = undefined diff --git a/plugins/task-resources/src/components/state/StatePresenter.svelte b/plugins/task-resources/src/components/state/StatePresenter.svelte index ca566c878c..ed135ba2be 100644 --- a/plugins/task-resources/src/components/state/StatePresenter.svelte +++ b/plugins/task-resources/src/components/state/StatePresenter.svelte @@ -61,7 +61,7 @@ const client = getClient() - async function getType ( + async function getType( space: Ref | undefined, projectType: Ref | undefined, types: IdMap diff --git a/plugins/task-resources/src/components/state/StatesBar.svelte b/plugins/task-resources/src/components/state/StatesBar.svelte index 813cde3e5a..8f4ca1a6b7 100644 --- a/plugins/task-resources/src/components/state/StatesBar.svelte +++ b/plugins/task-resources/src/components/state/StatesBar.svelte @@ -76,7 +76,7 @@ categories = toIdMap(res) }) - function getColor ( + function getColor( state: Status, _space: Project | undefined, typeStore: IdMap, diff --git a/plugins/task-resources/src/components/state/StatesPopup.svelte b/plugins/task-resources/src/components/state/StatesPopup.svelte index f34fc56ac6..0969988ef5 100644 --- a/plugins/task-resources/src/components/state/StatesPopup.svelte +++ b/plugins/task-resources/src/components/state/StatesPopup.svelte @@ -36,7 +36,7 @@ const client = getClient() - async function getType (space: Ref, types: IdMap): Promise { + async function getType(space: Ref, types: IdMap): Promise { const _space = await client.findOne(task.class.Project, { _id: space }) if (_space === undefined) { type = undefined diff --git a/plugins/task-resources/src/components/state/StatesProjectEditor.svelte b/plugins/task-resources/src/components/state/StatesProjectEditor.svelte index 55e937c075..bb28a80ec3 100644 --- a/plugins/task-resources/src/components/state/StatesProjectEditor.svelte +++ b/plugins/task-resources/src/components/state/StatesProjectEditor.svelte @@ -35,7 +35,7 @@ let dragState: Ref let opened: Ref | undefined - function dragswap (ev: MouseEvent, i: number, targetCategory: Ref): boolean { + function dragswap(ev: MouseEvent, i: number, targetCategory: Ref): boolean { if (readonly) return false const s = selected as number const sourceState = states[s] @@ -53,7 +53,7 @@ return false } - function dragover (ev: MouseEvent, i: number, targetCategory: Ref): void { + function dragover(ev: MouseEvent, i: number, targetCategory: Ref): void { if (readonly) return const s = selected as number @@ -63,7 +63,7 @@ } } - function moveState (i: number): void { + function moveState(i: number): void { if (readonly || selected === undefined || i === selected) return // Get state to move @@ -82,7 +82,7 @@ selected = targetIndex } - function onMove (to: number, targetCategory: Ref): void { + function onMove(to: number, targetCategory: Ref): void { if (readonly) return const state = $statusStore.byId.get(dragState) @@ -113,11 +113,11 @@ categoriesMap = toIdMap(res) }) - function getProjectStatus (type: ProjectType, state: Status): ProjectStatus | undefined { + function getProjectStatus(type: ProjectType, state: Status): ProjectStatus | undefined { return type.statuses.find((p) => p._id === state._id) } - function group (categories: StatusCategory[], states: Status[]): Map, Status[]> { + function group(categories: StatusCategory[], states: Status[]): Map, Status[]> { const map = new Map, Status[]>(categories.map((p) => [p._id, []])) for (const state of states) { if (state.category === undefined) continue @@ -134,7 +134,7 @@ $: groups = group(categories, taskTypeStates) - function getPrevIndex (groups: Map, Status[]>, categories: Ref): number { + function getPrevIndex(groups: Map, Status[]>, categories: Ref): number { let index = 0 for (const [cat, states] of groups) { if (cat === categories) { diff --git a/plugins/task-resources/src/components/state/TypeStatesPopup.svelte b/plugins/task-resources/src/components/state/TypeStatesPopup.svelte index 521df564a6..8382387f99 100644 --- a/plugins/task-resources/src/components/state/TypeStatesPopup.svelte +++ b/plugins/task-resources/src/components/state/TypeStatesPopup.svelte @@ -32,7 +32,7 @@ $: states = getStates($statusStore.byId, type, taskType) - function getStates ( + function getStates( statusStore: IdMap, type: ProjectType | undefined, taskType: TaskType | undefined @@ -48,7 +48,7 @@ const dispatch = createEventDispatcher() - function getColor (state: Status, type: ProjectType | undefined, categories: IdMap): ColorDefinition { + function getColor(state: Status, type: ProjectType | undefined, categories: IdMap): ColorDefinition { const category = state.category ? categories.get(state.category) : undefined const statusColor = type?.statuses?.find((p) => p._id === state._id)?.color const targetColor = diff --git a/plugins/task-resources/src/components/taskTypes/CreateTaskType.svelte b/plugins/task-resources/src/components/taskTypes/CreateTaskType.svelte index 9d7dfa4844..fbec74a92a 100644 --- a/plugins/task-resources/src/components/taskTypes/CreateTaskType.svelte +++ b/plugins/task-resources/src/components/taskTypes/CreateTaskType.svelte @@ -35,7 +35,7 @@ export let descriptor: ProjectTypeDescriptor export let taskType: TaskType | undefined - function defaultTaskType (type: ProjectType): Data { + function defaultTaskType(type: ProjectType): Data { return { kind: 'task', name: '', @@ -68,7 +68,7 @@ let { kind, name, targetClass, statusCategories, statuses, allowedAsChildOf } = taskType !== undefined ? { ...taskType } : { ...defaultTaskType(type) } - function findStatusClass (_class: Ref>): Ref> | undefined { + function findStatusClass(_class: Ref>): Ref> | undefined { const h = getClient().getHierarchy() const attrs = h.getAllAttributes(_class) for (const it of attrs.values()) { @@ -80,7 +80,7 @@ let taskTypeDescriptor: TaskTypeDescriptor = taskTypeDescriptors[0] - async function save (): Promise { + async function save(): Promise { if (type === undefined) return const descr = taskTypeDescriptors.find((it) => it._id === taskTypeDescriptor._id) diff --git a/plugins/task-resources/src/components/taskTypes/TaskKindSelector.svelte b/plugins/task-resources/src/components/taskTypes/TaskKindSelector.svelte index b6ca7bc33a..7113ad933d 100644 --- a/plugins/task-resources/src/components/taskTypes/TaskKindSelector.svelte +++ b/plugins/task-resources/src/components/taskTypes/TaskKindSelector.svelte @@ -52,7 +52,7 @@ const dispatch = createEventDispatcher() - function change () { + function change() { dispatch('change', value) } diff --git a/plugins/task-resources/src/components/taskTypes/TaskTypeEditor.svelte b/plugins/task-resources/src/components/taskTypes/TaskTypeEditor.svelte index d0a2b69a64..c67e86bae9 100644 --- a/plugins/task-resources/src/components/taskTypes/TaskTypeEditor.svelte +++ b/plugins/task-resources/src/components/taskTypes/TaskTypeEditor.svelte @@ -88,7 +88,7 @@ ) } - function selectIcon (el: MouseEvent): void { + function selectIcon(el: MouseEvent): void { if (readonly) { return } @@ -107,7 +107,7 @@ ) } - function handleAddStatus (): void { + function handleAddStatus(): void { if (taskType === undefined || readonly) { return } @@ -134,7 +134,7 @@ $: canDelete = !loading && tasksCounter === 0 - async function handleDelete (): Promise { + async function handleDelete(): Promise { if (!canDelete || readonly || taskType == null) { return } @@ -155,7 +155,7 @@ } }) } - async function showIssuesOfTaskType (): Promise { + async function showIssuesOfTaskType(): Promise { if (taskType == null) return const descriptor = client .getModel() diff --git a/plugins/task/.eslintrc.js b/plugins/task/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/task/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/task/eslint.config.mjs b/plugins/task/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/task/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/task/package.json b/plugins/task/package.json index e7d290300e..15dcb470bc 100644 --- a/plugins/task/package.json +++ b/plugins/task/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/plugins/telegram-assets/.eslintrc.js b/plugins/telegram-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/telegram-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/telegram-assets/eslint.config.mjs b/plugins/telegram-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/telegram-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/telegram-assets/package.json b/plugins/telegram-assets/package.json index 10ab77ee30..36a5099e4e 100644 --- a/plugins/telegram-assets/package.json +++ b/plugins/telegram-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/telegram-assets/src/lang.ts b/plugins/telegram-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/telegram-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/telegram-resources/.eslintrc.js b/plugins/telegram-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/telegram-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/telegram-resources/eslint.config.mjs b/plugins/telegram-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/telegram-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/telegram-resources/package.json b/plugins/telegram-resources/package.json index f4c60048ea..4472bcfffb 100644 --- a/plugins/telegram-resources/package.json +++ b/plugins/telegram-resources/package.json @@ -20,22 +20,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/account-client": "workspace:^0.7.25", diff --git a/plugins/telegram-resources/src/components/Chat.svelte b/plugins/telegram-resources/src/components/Chat.svelte index b57e04ad40..f51157a35f 100644 --- a/plugins/telegram-resources/src/components/Chat.svelte +++ b/plugins/telegram-resources/src/components/Chat.svelte @@ -82,7 +82,7 @@ const messagesQuery = createQuery() const settingsQuery = createQuery() - function updateMessagesQuery (channelId: Ref): void { + function updateMessagesQuery(channelId: Ref): void { messagesQuery.query( telegram.class.Message, { attachedTo: channelId }, @@ -112,7 +112,7 @@ } ) - async function onMessage (event: CustomEvent) { + async function onMessage(event: CustomEvent) { if (channel === undefined) return const { message, attachments } = event.detail await client.addCollection( @@ -137,7 +137,7 @@ // return message.incoming ? object.name : accounts.get(message.modifiedBy as PersonId)?.name ?? '' // } - async function share (): Promise { + async function share(): Promise { // TODO: FIXME throw new Error('Not implemented') // const selectedMessages = messages.filter((m) => selected.has(m._id as unknown as Ref)) @@ -157,7 +157,7 @@ // clear() } - function clear (): void { + function clear(): void { selectable = false selected.clear() selected = selected @@ -173,7 +173,7 @@ // }) // } - async function onConnectClose (res: any): Promise { + async function onConnectClose(res: any): Promise { if (res?.value) { await client.createDoc(setting.class.Integration, core.space.Workspace, { type: telegram.integrationType.Telegram, @@ -183,7 +183,7 @@ } } - async function onReconnect (res: any): Promise { + async function onReconnect(res: any): Promise { if (res?.value && integration !== undefined) { await client.update(integration, { disabled: false diff --git a/plugins/telegram-resources/src/components/Configure.svelte b/plugins/telegram-resources/src/components/Configure.svelte index 07a192c0ba..63c5d41c60 100644 --- a/plugins/telegram-resources/src/components/Configure.svelte +++ b/plugins/telegram-resources/src/components/Configure.svelte @@ -110,7 +110,7 @@ }) // Get channel icon based on type - function getChannelIcon (channel: TelegramChannelConfig) { + function getChannelIcon(channel: TelegramChannelConfig) { switch (channel.type) { case 'user': return telegram.icon.User @@ -150,7 +150,7 @@ }) // Handle filter changes - function handleFilterChange (event: CustomEvent): void { + function handleFilterChange(event: CustomEvent): void { activeFilters = event.detail } @@ -159,7 +159,7 @@ updateSelectAllForFiltered(filteredChannels, selectedChannels) } - function updateSelectAllForFiltered (filtered: typeof filteredChannels, selected: typeof selectedChannels): void { + function updateSelectAllForFiltered(filtered: typeof filteredChannels, selected: typeof selectedChannels): void { if (filtered === undefined || filtered.length === 0) { selectAll = false return @@ -171,7 +171,7 @@ } // Handle individual channel selection - function toggleChannelSelection (channelId: string): void { + function toggleChannelSelection(channelId: string): void { if (selectedChannels.has(channelId)) { selectedChannels.delete(channelId) } else { @@ -182,7 +182,7 @@ } // Update sync status for individual channel - function updateChannelSync (channelId: string, enabled: boolean): void { + function updateChannelSync(channelId: string, enabled: boolean): void { const channel = channels.find((c) => c.id === channelId) if (channel) { channel.syncEnabled = enabled @@ -191,7 +191,7 @@ } } - function updateChannelSpace (channelId: string, space: Space): void { + function updateChannelSpace(channelId: string, space: Space): void { const channel = channels.find((c) => c.id === channelId) if (channel !== undefined && channel?.syncEnabled) { channel.space = space._id @@ -201,7 +201,7 @@ } // Action button functions - function selectAllFiltered (): void { + function selectAllFiltered(): void { filteredChannels.forEach((channel) => { selectedChannels.add(channel.id) }) @@ -209,7 +209,7 @@ updateSelectAllForFiltered(filteredChannels, selectedChannels) } - function unselectAllFiltered (): void { + function unselectAllFiltered(): void { filteredChannels.forEach((channel) => { selectedChannels.delete(channel.id) }) @@ -217,19 +217,19 @@ updateSelectAllForFiltered(filteredChannels, selectedChannels) } - function enableSelectedChannels (): void { + function enableSelectedChannels(): void { selectedChannels.forEach((channelId) => { updateChannelSync(channelId, true) }) } - function disableSelectedChannels (): void { + function disableSelectedChannels(): void { selectedChannels.forEach((channelId) => { updateChannelSync(channelId, false) }) } - function showActionsPopup (event: MouseEvent): void { + function showActionsPopup(event: MouseEvent): void { const actionItems = [ { id: 'select-all', @@ -280,12 +280,12 @@ ) } - function handleRightClick (event: MouseEvent): void { + function handleRightClick(event: MouseEvent): void { event.preventDefault() showActionsPopup(event) } - async function applyChanges (): Promise { + async function applyChanges(): Promise { // Dispatch event to apply changes const integrationClient = await getIntegrationClient() integration = isWorkspaceIntegration(integration) @@ -316,11 +316,11 @@ } // Clear search - function clearSearch (): void { + function clearSearch(): void { searchQuery = '' } - function close (): void { + function close(): void { closePopup() } diff --git a/plugins/telegram-resources/src/components/ConfigureBotPopup.svelte b/plugins/telegram-resources/src/components/ConfigureBotPopup.svelte index 78e3ddc556..a16004aff5 100644 --- a/plugins/telegram-resources/src/components/ConfigureBotPopup.svelte +++ b/plugins/telegram-resources/src/components/ConfigureBotPopup.svelte @@ -37,7 +37,7 @@ void loadBotInfo() }) - async function loadBotInfo (): Promise { + async function loadBotInfo(): Promise { if (info !== undefined || isLoading) return isLoading = true try { @@ -54,7 +54,7 @@ isLoading = false } - async function handleTestConnection (): Promise { + async function handleTestConnection(): Promise { isTestingConnection = true isConnectionEstablished = false connectionError = undefined @@ -90,7 +90,7 @@ let isCodeValid = false let codeError: IntlString | undefined - async function handleCode (event: CustomEvent): Promise { + async function handleCode(event: CustomEvent): Promise { isCodeValid = false codeError = undefined diff --git a/plugins/telegram-resources/src/components/Connect.svelte b/plugins/telegram-resources/src/components/Connect.svelte index 968fe191a8..1c7b8928ea 100644 --- a/plugins/telegram-resources/src/components/Connect.svelte +++ b/plugins/telegram-resources/src/components/Connect.svelte @@ -36,13 +36,13 @@ const dispatch = createEventDispatcher() - function close (value?: string): void { + function close(value?: string): void { const connected = state.mode === 'Authorized' || state.mode === 'Configured' dispatch('close', { value, connected }) } // Wrapper for command API with loading state management - async function commandWithLoading (phone: string, action: 'start' | 'next', data?: string): Promise { + async function commandWithLoading(phone: string, action: 'start' | 'next', data?: string): Promise { if (isLoading) { throw new Error('Already processing request') } @@ -69,7 +69,7 @@ let integrationState: IntegrationState = 'Loading' let state: UIState = { mode: 'Loading' } - function h (handler: () => Promise) { + function h(handler: () => Promise) { return () => { handler() .then((i) => { @@ -88,7 +88,7 @@ } } - function getErrorLabel (error: any): IntlString | undefined { + function getErrorLabel(error: any): IntlString | undefined { if (error instanceof PlatformError) { if (error.status.code === platform.status.Unauthorized || error.status.code === platform.status.Forbidden) { return telegram.string.IncorrectPhoneOrCode @@ -190,7 +190,7 @@ } } - async function init (): Promise { + async function init(): Promise { try { const phoneNumber = integration?.data?.phone @@ -227,7 +227,7 @@ } } - async function disconnectSession (phoneNumber: string): Promise { + async function disconnectSession(phoneNumber: string): Promise { try { await disconnect(phoneNumber) } catch (error: any) { diff --git a/plugins/telegram-resources/src/components/IntegrationState.svelte b/plugins/telegram-resources/src/components/IntegrationState.svelte index 322cfff26f..b205ee6740 100644 --- a/plugins/telegram-resources/src/components/IntegrationState.svelte +++ b/plugins/telegram-resources/src/components/IntegrationState.svelte @@ -38,7 +38,7 @@ let integrationClient: IntegrationClient | undefined const unsubscribers: (() => void)[] = [] - async function handleUnauthorized (): Promise { + async function handleUnauthorized(): Promise { if (isDisabled(integration)) { return } @@ -81,11 +81,11 @@ }) }) - function subscribe (): void { + function subscribe(): void { unsubscribers.push(onIntegrationEvent('integration:updated', onUpdateIntegration)) } - function onUpdateIntegration (data: IntegrationUpdatedData): void { + function onUpdateIntegration(data: IntegrationUpdatedData): void { if ( data.integration?.socialId === integration.socialId && data.integration?.workspaceUuid === integration.workspaceUuid @@ -110,7 +110,7 @@ } } - async function refresh (): Promise { + async function refresh(): Promise { try { if (isDisabled(integration)) { return diff --git a/plugins/telegram-resources/src/components/Messages.svelte b/plugins/telegram-resources/src/components/Messages.svelte index 4a853fb156..c286295d2f 100644 --- a/plugins/telegram-resources/src/components/Messages.svelte +++ b/plugins/telegram-resources/src/components/Messages.svelte @@ -23,21 +23,21 @@ export let selectable: boolean = false export let selected: Set> = new Set>() - function isNewDate (messages: SharedTelegramMessage[], i: number): boolean { + function isNewDate(messages: SharedTelegramMessage[], i: number): boolean { if (i === 0) return true const current = new Date(messages[i].sendOn).toLocaleDateString() const prev = new Date(messages[i - 1].sendOn).toLocaleDateString() return current !== prev } - function needName (messages: SharedTelegramMessage[], i: number): boolean { + function needName(messages: SharedTelegramMessage[], i: number): boolean { if (i === 0) return true const current = messages[i] const prev = messages[i - 1] return current.incoming !== prev.incoming || current.modifiedBy !== prev.modifiedBy } - function select (id: Ref): void { + function select(id: Ref): void { if (!selectable) return if (selected.has(id)) { selected.delete(id) diff --git a/plugins/telegram-resources/src/components/NotificationProviderPresenter.svelte b/plugins/telegram-resources/src/components/NotificationProviderPresenter.svelte index 74e1ccdc91..59bd5e9861 100644 --- a/plugins/telegram-resources/src/components/NotificationProviderPresenter.svelte +++ b/plugins/telegram-resources/src/components/NotificationProviderPresenter.svelte @@ -21,7 +21,7 @@ export let enabled: boolean - function configureBot (): void { + function configureBot(): void { showPopup(ConfigureBotPopup, {}) } diff --git a/plugins/telegram-resources/src/components/PhoneInput.svelte b/plugins/telegram-resources/src/components/PhoneInput.svelte index 6dc991e037..29b915a6ab 100644 --- a/plugins/telegram-resources/src/components/PhoneInput.svelte +++ b/plugins/telegram-resources/src/components/PhoneInput.svelte @@ -10,7 +10,7 @@ const formatter: AsYouType = new AsYouType() - function formatPhone (newValue: string | number): string | number { + function formatPhone(newValue: string | number): string | number { newValue = typeof newValue === 'number' ? newValue.toString() : newValue // Only allow digits, +, spaces, parentheses, and hyphens diff --git a/plugins/telegram-resources/src/components/activity/TelegramMessageCreated.svelte b/plugins/telegram-resources/src/components/activity/TelegramMessageCreated.svelte index 371a6507bc..0bc0df2802 100644 --- a/plugins/telegram-resources/src/components/activity/TelegramMessageCreated.svelte +++ b/plugins/telegram-resources/src/components/activity/TelegramMessageCreated.svelte @@ -29,7 +29,7 @@ $: value === undefined && _id && loadObject(_id) - async function loadObject (_id: Ref): Promise { + async function loadObject(_id: Ref): Promise { const isRemoved = await checkIsObjectRemoved(client, _id, telegram.class.Message) if (isRemoved) { diff --git a/plugins/telegram/.eslintrc.js b/plugins/telegram/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/telegram/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/telegram/eslint.config.mjs b/plugins/telegram/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/telegram/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/telegram/package.json b/plugins/telegram/package.json index ad36993f30..47f9c8bf90 100644 --- a/plugins/telegram/package.json +++ b/plugins/telegram/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/plugins/templates-assets/.eslintrc.js b/plugins/templates-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/templates-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/templates-assets/eslint.config.mjs b/plugins/templates-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/templates-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/templates-assets/package.json b/plugins/templates-assets/package.json index e08f547c3b..cc6b3b5c34 100644 --- a/plugins/templates-assets/package.json +++ b/plugins/templates-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/templates-assets/src/lang.ts b/plugins/templates-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/templates-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/templates-resources/.eslintrc.js b/plugins/templates-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/templates-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/templates-resources/eslint.config.mjs b/plugins/templates-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/templates-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/templates-resources/package.json b/plugins/templates-resources/package.json index 6efb490760..5176930fb3 100644 --- a/plugins/templates-resources/package.json +++ b/plugins/templates-resources/package.json @@ -20,22 +20,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/templates-resources/src/components/Copy.svelte b/plugins/templates-resources/src/components/Copy.svelte index a7cfbfc22d..276d074109 100644 --- a/plugins/templates-resources/src/components/Copy.svelte +++ b/plugins/templates-resources/src/components/Copy.svelte @@ -23,7 +23,7 @@ const client = getClient() - async function save (): Promise { + async function save(): Promise { await client.createDoc(value._class, space, { title: value.title, message: value.message diff --git a/plugins/templates-resources/src/components/CreateTemplateCategory.svelte b/plugins/templates-resources/src/components/CreateTemplateCategory.svelte index 3fda044783..05428e2664 100644 --- a/plugins/templates-resources/src/components/CreateTemplateCategory.svelte +++ b/plugins/templates-resources/src/components/CreateTemplateCategory.svelte @@ -25,13 +25,13 @@ const description: string = '' let isPrivate: boolean = false - export function canClose (): boolean { + export function canClose(): boolean { return name === '' } const client = getClient() - async function create (): Promise { + async function create(): Promise { await client.createDoc(templates.class.TemplateCategory, core.space.Space, { name, description, diff --git a/plugins/templates-resources/src/components/EditGroup.svelte b/plugins/templates-resources/src/components/EditGroup.svelte index b8a2b78bab..7f403bc76f 100644 --- a/plugins/templates-resources/src/components/EditGroup.svelte +++ b/plugins/templates-resources/src/components/EditGroup.svelte @@ -31,7 +31,7 @@ const client = getClient() const rawName = object.name - async function changeName (value: string): Promise { + async function changeName(value: string): Promise { if (object) { await client.updateDoc(object._class, object.space, object._id, { name: value }) } diff --git a/plugins/templates-resources/src/components/EditorTemplatePopup.svelte b/plugins/templates-resources/src/components/EditorTemplatePopup.svelte index 7f238f99c2..467ec4b76f 100644 --- a/plugins/templates-resources/src/components/EditorTemplatePopup.svelte +++ b/plugins/templates-resources/src/components/EditorTemplatePopup.svelte @@ -18,7 +18,7 @@ export let editor: TextEditorHandler - async function dispatchItem (e: CustomEvent): Promise { + async function dispatchItem(e: CustomEvent): Promise { editor.insertTemplate(e.detail.title, e.detail.message) } diff --git a/plugins/templates-resources/src/components/Move.svelte b/plugins/templates-resources/src/components/Move.svelte index 9a6be80742..50c2ec07d2 100644 --- a/plugins/templates-resources/src/components/Move.svelte +++ b/plugins/templates-resources/src/components/Move.svelte @@ -24,7 +24,7 @@ const client = getClient() - async function save (): Promise { + async function save(): Promise { await client.update(value, { space }) diff --git a/plugins/templates-resources/src/components/TemplatePopup.svelte b/plugins/templates-resources/src/components/TemplatePopup.svelte index aa22fa956b..c733a40284 100644 --- a/plugins/templates-resources/src/components/TemplatePopup.svelte +++ b/plugins/templates-resources/src/components/TemplatePopup.svelte @@ -48,7 +48,7 @@ const dispatch = createEventDispatcher() const provider = getTemplateDataProvider() - async function dispatchItem (item: MessageTemplate): Promise { + async function dispatchItem(item: MessageTemplate): Promise { const message = await provider.fillTemplate(item.message) dispatch('template', { _id: item._id, @@ -63,7 +63,7 @@ closePopup() } - export function onKeyDown (ev: KeyboardEvent) { + export function onKeyDown(ev: KeyboardEvent) { if (ev.key === 'ArrowDown') { if (selected < items.length - 1) selected++ return true @@ -88,7 +88,7 @@ return false } - function getInitIndex (groups: TemplateCategory[], i: number): number { + function getInitIndex(groups: TemplateCategory[], i: number): number { let res = 0 for (let index = 0; index < i; index++) { const cat = groups[index] diff --git a/plugins/templates-resources/src/components/Templates.svelte b/plugins/templates-resources/src/components/Templates.svelte index b202a6e52c..0069894f0b 100644 --- a/plugins/templates-resources/src/components/Templates.svelte +++ b/plugins/templates-resources/src/components/Templates.svelte @@ -58,13 +58,13 @@ } let mode = Mode.View - async function addTemplate (): Promise { + async function addTemplate(): Promise { title = '' message = '' newTemplate = true mode = Mode.Create } - async function saveNewTemplate (): Promise { + async function saveNewTemplate(): Promise { if (!newTemplate) { return } @@ -87,14 +87,14 @@ let textEditor: StyledTextEditor - export function submit (): void { + export function submit(): void { textEditor.submit() } const updateTemplate = (evt: any) => { message = evt.detail } - function addField (ev: MouseEvent) { + function addField(ev: MouseEvent) { showPopup(FieldPopup, {}, eventToHTMLElement(ev), (res) => { if (res !== undefined) { textEditor.insertText(`\${${res._id}}`) @@ -102,11 +102,11 @@ }) } - function getTemplates (templates: MessageTemplate[], space: Ref): MessageTemplate[] { + function getTemplates(templates: MessageTemplate[], space: Ref): MessageTemplate[] { return templates.filter((p) => p.space === space) } - async function getActions (t: MessageTemplate): Promise { + async function getActions(t: MessageTemplate): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, t) for (const act of extraActions) { @@ -130,7 +130,7 @@ } } - async function getSpaceActions (space: TemplateCategory): Promise { + async function getSpaceActions(space: TemplateCategory): Promise { const result: Action[] = [addSpace] const extraActions = await getContributedActions(client, space, core.class.Space) for (const act of extraActions) { diff --git a/plugins/templates/.eslintrc.js b/plugins/templates/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/templates/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/templates/eslint.config.mjs b/plugins/templates/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/templates/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/templates/package.json b/plugins/templates/package.json index b0cdb0f47c..586bc29e3f 100644 --- a/plugins/templates/package.json +++ b/plugins/templates/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/test-management-assets/.eslintrc.js b/plugins/test-management-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/test-management-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/test-management-assets/eslint.config.mjs b/plugins/test-management-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/test-management-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/test-management-assets/package.json b/plugins/test-management-assets/package.json index a1dedf0d83..7fc670f8a3 100644 --- a/plugins/test-management-assets/package.json +++ b/plugins/test-management-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/test-management-assets/src/lang.ts b/plugins/test-management-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/test-management-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/test-management-resources/.eslintrc.js b/plugins/test-management-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/test-management-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/test-management-resources/eslint.config.mjs b/plugins/test-management-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/test-management-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/test-management-resources/package.json b/plugins/test-management-resources/package.json index e317e3c58f..99c0b27034 100644 --- a/plugins/test-management-resources/package.json +++ b/plugins/test-management-resources/package.json @@ -20,22 +20,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/plugins/test-management-resources/src/components/TestManagementSpaceHeader.svelte b/plugins/test-management-resources/src/components/TestManagementSpaceHeader.svelte index 7b21a07498..927c33ce45 100644 --- a/plugins/test-management-resources/src/components/TestManagementSpaceHeader.svelte +++ b/plugins/test-management-resources/src/components/TestManagementSpaceHeader.svelte @@ -41,15 +41,15 @@ ) } - async function handleCreateProject (): Promise { + async function handleCreateProject(): Promise { await showCreateProjectPopup() } - async function handleCreateTestSuite (): Promise { + async function handleCreateTestSuite(): Promise { await showCreateTestSuitePopup(currentSpace, testManagement.ids.NoParent) } - async function handleCreateTestCase (): Promise { + async function handleCreateTestCase(): Promise { if (currentSpace !== undefined) { await showCreateTestCasePopup(currentSpace, getTestSuiteIdFromLocation()) } else { @@ -57,7 +57,7 @@ } } - async function handleDropdownItemSelected (res?: SelectPopupValueType['id']): Promise { + async function handleDropdownItemSelected(res?: SelectPopupValueType['id']): Promise { switch (res) { case testManagement.string.CreateProject: { await handleCreateProject() diff --git a/plugins/test-management-resources/src/components/project/CreateProject.svelte b/plugins/test-management-resources/src/components/project/CreateProject.svelte index 099a8395ce..f6be0237f6 100644 --- a/plugins/test-management-resources/src/components/project/CreateProject.svelte +++ b/plugins/test-management-resources/src/components/project/CreateProject.svelte @@ -77,8 +77,8 @@ spaceType = id !== undefined ? await client - .getModel() - .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) + .getModel() + .findOne(core.class.SpaceType, { _id: id }, { lookup: { _id: { roles: core.class.Role } } }) : undefined if (project === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { @@ -88,7 +88,7 @@ rolesAssignment = getRolesAssignment() }) - function getRolesAssignment (): RolesAssignment { + function getRolesAssignment(): RolesAssignment { if (project === undefined || spaceType?.targetClass === undefined || spaceType?.$lookup?.roles === undefined) { return {} } @@ -102,7 +102,7 @@ }, {}) } - async function handleSave (): Promise { + async function handleSave(): Promise { if (project === undefined) { await createTestProject() } else { @@ -110,7 +110,7 @@ } } - function getTestProjectData (): Omit, 'type'> { + function getTestProjectData(): Omit, 'type'> { return { name, description, @@ -123,7 +123,7 @@ } } - async function updateTestProject (): Promise { + async function updateTestProject(): Promise { if (project === undefined || spaceType?.targetClass === undefined) { return } @@ -183,7 +183,7 @@ close() } - async function createTestProject (): Promise { + async function createTestProject(): Promise { if (typeId === undefined || spaceType?.targetClass === undefined) { return } @@ -210,24 +210,24 @@ close(projectId) } - function close (id?: Ref): void { + function close(id?: Ref): void { dispatch('close', id) } - function handleTypeChange (evt: CustomEvent>): void { + function handleTypeChange(evt: CustomEvent>): void { typeId = evt.detail } $: roles = (spaceType?.$lookup?.roles ?? []) as Role[] - function handleOwnersChanged (newOwners: AccountUuid[]): void { + function handleOwnersChanged(newOwners: AccountUuid[]): void { owners = newOwners const newMembersSet = new Set([...members, ...newOwners]) members = Array.from(newMembersSet) } - function handleMembersChanged (newMembers: AccountUuid[]): void { + function handleMembersChanged(newMembers: AccountUuid[]): void { // If a member was removed we need to remove it from any roles assignments as well const newMembersSet = new Set(newMembers) const removedMembersSet = new Set(members.filter((m) => !newMembersSet.has(m))) @@ -241,7 +241,7 @@ members = newMembers } - function chooseIcon (ev: MouseEvent): void { + function chooseIcon(ev: MouseEvent): void { const icons = [testManagement.icon.Home, testManagement.icon.RedCircle] const update = (result: any): void => { if (result !== undefined && result !== null) { @@ -253,7 +253,7 @@ showPopup(IconPicker, { icon, color, icons }, 'top', update, update) } - function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): void { + function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): void { if (rolesAssignment === undefined) { rolesAssignment = {} } diff --git a/plugins/test-management-resources/src/components/project/ProjectSpacePresenter.svelte b/plugins/test-management-resources/src/components/project/ProjectSpacePresenter.svelte index c779f19393..4f9777d12f 100644 --- a/plugins/test-management-resources/src/components/project/ProjectSpacePresenter.svelte +++ b/plugins/test-management-resources/src/components/project/ProjectSpacePresenter.svelte @@ -29,11 +29,11 @@ export let currentSpecial: string | undefined export let getActions: (space: TestProject) => Promise = async () => [] export let deselect: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false let specials: SpecialNavModel[] = [] - async function updateSpecials (model: SpacesNavModel, space: TestProject): Promise { + async function updateSpecials(model: SpacesNavModel, space: TestProject): Promise { const newSpecials: SpecialNavModel[] = [] for (const sp of model.specials ?? []) { let shouldAdd = true @@ -55,7 +55,7 @@ } $: visible = (!deselect && currentSpace !== undefined && currentSpecial !== undefined && space._id === currentSpace) || - forciblyСollapsed + forciblyCollapsed {#if specials} @@ -75,7 +75,7 @@ highlighted={space._id === currentSpace} {visible} actions={() => getActions(space)} - {forciblyСollapsed} + {forciblyCollapsed} > {#each specials as special} @@ -93,7 +93,7 @@ {@const item = specials.find((sp) => sp.id === currentSpecial && currentSpace === space._id)} {#if item} - + {/if} {/if} diff --git a/plugins/test-management-resources/src/components/test-case/CreateTestCase.svelte b/plugins/test-management-resources/src/components/test-case/CreateTestCase.svelte index fce254f756..9e8c9c9ed1 100644 --- a/plugins/test-management-resources/src/components/test-case/CreateTestCase.svelte +++ b/plugins/test-management-resources/src/components/test-case/CreateTestCase.svelte @@ -29,7 +29,7 @@ export let onCreate: ((orgId: Ref, client: TxOperations) => Promise) | undefined = undefined - export function canClose (): boolean { + export function canClose(): boolean { return object.name === '' } @@ -59,7 +59,7 @@ fillDefaults(hierarchy, object, testManagement.class.TestCase) - async function createTestCase (): Promise { + async function createTestCase(): Promise { const op = client.apply() if (!isEmptyMarkup(description)) { const target = makeCollabId(testManagement.class.TestCase, id, 'description') @@ -83,7 +83,7 @@ dispatch('close', id) } - function handleTestSuiteChange (evt: CustomEvent>): void { + function handleTestSuiteChange(evt: CustomEvent>): void { object.attachedTo = evt.detail } diff --git a/plugins/test-management-resources/src/components/test-case/SelectTestCasesModal.svelte b/plugins/test-management-resources/src/components/test-case/SelectTestCasesModal.svelte index 074ea6fb6e..bdc55b7ef0 100644 --- a/plugins/test-management-resources/src/components/test-case/SelectTestCasesModal.svelte +++ b/plugins/test-management-resources/src/components/test-case/SelectTestCasesModal.svelte @@ -45,7 +45,7 @@ }) } - async function handleSave (): Promise { + async function handleSave(): Promise { if (onSave !== undefined) { const testCases: TestCase[] = ($selectionStore?.docs ?? []) as TestCase[] onSave(testCases) @@ -53,7 +53,7 @@ handleClose() } - function handleClose (): void { + function handleClose(): void { dispatch('close') } diff --git a/plugins/test-management-resources/src/components/test-case/StatusEditor.svelte b/plugins/test-management-resources/src/components/test-case/StatusEditor.svelte index 959a9c8ab4..6fad3244a3 100644 --- a/plugins/test-management-resources/src/components/test-case/StatusEditor.svelte +++ b/plugins/test-management-resources/src/components/test-case/StatusEditor.svelte @@ -49,7 +49,7 @@ ...testCaseStatusAssets[status] })) - function handlePopupOpen (event: MouseEvent): void { + function handlePopupOpen(event: MouseEvent): void { showPopup( SelectPopup, { value: itemsInfo, placeholder: testManagement.string.SetStatus }, @@ -58,7 +58,7 @@ ) } - async function changeStatus (newStatus: TestCase['status'] | null | undefined): Promise { + async function changeStatus(newStatus: TestCase['status'] | null | undefined): Promise { if (disabled || newStatus == null || value === newStatus) { return } diff --git a/plugins/test-management-resources/src/components/test-plan/NewTestPlanPanel.svelte b/plugins/test-management-resources/src/components/test-plan/NewTestPlanPanel.svelte index 4979eb1f2b..f7005d2b76 100644 --- a/plugins/test-management-resources/src/components/test-plan/NewTestPlanPanel.svelte +++ b/plugins/test-management-resources/src/components/test-plan/NewTestPlanPanel.svelte @@ -64,7 +64,7 @@ let descriptionBox: AttachmentStyledBox let attachments: Map, Attachment> = new Map, Attachment>() - async function onSave (): Promise { + async function onSave(): Promise { try { const applyOp = client.apply() await applyOp.createDoc(testManagement.class.TestPlan, space, object, id) diff --git a/plugins/test-management-resources/src/components/test-result/TestResultStatusEditor.svelte b/plugins/test-management-resources/src/components/test-result/TestResultStatusEditor.svelte index dea4e87317..3b4af04591 100644 --- a/plugins/test-management-resources/src/components/test-result/TestResultStatusEditor.svelte +++ b/plugins/test-management-resources/src/components/test-result/TestResultStatusEditor.svelte @@ -50,7 +50,7 @@ ...testRunStatusAssets[status] })) - function handlePopupOpen (event: MouseEvent): void { + function handlePopupOpen(event: MouseEvent): void { showPopup( SelectPopup, { value: itemsInfo, placeholder: testManagement.string.SetStatus }, @@ -59,7 +59,7 @@ ) } - async function changeStatus (newStatus: TestResult['status'] | null | undefined): Promise { + async function changeStatus(newStatus: TestResult['status'] | null | undefined): Promise { if (disabled || newStatus == null || value === newStatus) { return } diff --git a/plugins/test-management-resources/src/components/test-result/TestRunner.svelte b/plugins/test-management-resources/src/components/test-result/TestRunner.svelte index e23c4cb2fb..d70b5e42c5 100644 --- a/plugins/test-management-resources/src/components/test-result/TestRunner.svelte +++ b/plugins/test-management-resources/src/components/test-result/TestRunner.svelte @@ -44,7 +44,7 @@ unsubscribe() }) - async function goToNextItem (): Promise { + async function goToNextItem(): Promise { object = testResultIteratorProvider.getIterator()?.next() testCase = object?.$lookup?.testCase as TestCase | undefined } diff --git a/plugins/test-management-resources/src/components/test-run/NewTestRunPanel.svelte b/plugins/test-management-resources/src/components/test-run/NewTestRunPanel.svelte index 030e1414f4..b985956263 100644 --- a/plugins/test-management-resources/src/components/test-run/NewTestRunPanel.svelte +++ b/plugins/test-management-resources/src/components/test-run/NewTestRunPanel.svelte @@ -93,7 +93,7 @@ let description = EmptyMarkup let attachments: Map, Attachment> = new Map, Attachment>() - async function onSave (): Promise { + async function onSave(): Promise { try { const applyOp = client.apply() await applyOp.createDoc(testManagement.class.TestRun, space, object, id) diff --git a/plugins/test-management-resources/src/components/test-suite/CreateTestSuite.svelte b/plugins/test-management-resources/src/components/test-suite/CreateTestSuite.svelte index ea0e14f66c..7664aed8fe 100644 --- a/plugins/test-management-resources/src/components/test-suite/CreateTestSuite.svelte +++ b/plugins/test-management-resources/src/components/test-suite/CreateTestSuite.svelte @@ -37,11 +37,11 @@ let _space = space - function handleTestSuiteChange (evt: CustomEvent>): void { + function handleTestSuiteChange(evt: CustomEvent>): void { object.parent = evt.detail } - async function onSave () { + async function onSave() { await client.createDoc(testManagement.class.TestSuite, _space, object) } diff --git a/plugins/test-management/.eslintrc.js b/plugins/test-management/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/test-management/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/test-management/eslint.config.mjs b/plugins/test-management/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/test-management/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/test-management/package.json b/plugins/test-management/package.json index 004dc0406e..edc42a2858 100644 --- a/plugins/test-management/package.json +++ b/plugins/test-management/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/text-editor-assets/.eslintrc.js b/plugins/text-editor-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/text-editor-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/text-editor-assets/eslint.config.mjs b/plugins/text-editor-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/text-editor-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/text-editor-assets/package.json b/plugins/text-editor-assets/package.json index c12c899cb6..a11798a19c 100644 --- a/plugins/text-editor-assets/package.json +++ b/plugins/text-editor-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/text-editor-assets/src/lang.ts b/plugins/text-editor-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/text-editor-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/text-editor-resources/.eslintrc.js b/plugins/text-editor-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/text-editor-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/text-editor-resources/eslint.config.mjs b/plugins/text-editor-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/text-editor-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/text-editor-resources/package.json b/plugins/text-editor-resources/package.json index b5d3b89c92..bb6f25d3c1 100644 --- a/plugins/text-editor-resources/package.json +++ b/plugins/text-editor-resources/package.json @@ -22,24 +22,23 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/diff": "~5.0.2", "@types/katex": "^0.16.0", - "svelte-eslint-parser": "^0.33.1" + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -98,7 +97,7 @@ "slugify": "^1.6.6", "lib0": "^0.2.109", "lowlight": "^3.3.0", - "mermaid": "^11.12.0", + "mermaid": "^11.17.2", "@hcengineering/theme": "workspace:^0.7.0", "tippy.js": "~6.3.7", "@hcengineering/activity": "workspace:^0.7.0", diff --git a/plugins/text-editor-resources/src/command/deleteAttachment.ts b/plugins/text-editor-resources/src/command/deleteAttachment.ts index c4a87798fa..7596e40e54 100644 --- a/plugins/text-editor-resources/src/command/deleteAttachment.ts +++ b/plugins/text-editor-resources/src/command/deleteAttachment.ts @@ -27,20 +27,20 @@ declare module '@tiptap/core' { export const deleteAttachment: RawCommands['deleteAttachment'] = (id: string) => - ({ tr, dispatch }) => { - if (dispatch !== undefined) { - const nodeWithPos = findChildren(tr.doc, (node) => { - return ( - (node.type.name === FileNode.name && node.attrs['file-id'] === id) || + ({ tr, dispatch }) => { + if (dispatch !== undefined) { + const nodeWithPos = findChildren(tr.doc, (node) => { + return ( + (node.type.name === FileNode.name && node.attrs['file-id'] === id) || (node.type.name === ImageNode.name && node.attrs['file-id'] === id) - ) + ) + }) + nodeWithPos + .sort((a, b) => b.pos - a.pos) + .forEach(({ node, pos }) => { + tr.delete(pos, pos + node.nodeSize) }) - nodeWithPos - .sort((a, b) => b.pos - a.pos) - .forEach(({ node, pos }) => { - tr.delete(pos, pos + node.nodeSize) - }) - } - - return true } + + return true + } diff --git a/plugins/text-editor-resources/src/components/CollaborationDiffViewer.svelte b/plugins/text-editor-resources/src/components/CollaborationDiffViewer.svelte index 9e738b4cb5..a6843b3922 100644 --- a/plugins/text-editor-resources/src/components/CollaborationDiffViewer.svelte +++ b/plugins/text-editor-resources/src/components/CollaborationDiffViewer.svelte @@ -43,14 +43,14 @@ $: ydocCopy = copyYdoc(ydoc) - function copyYdoc (ydoc: Ydoc): Ydoc { + function copyYdoc(ydoc: Ydoc): Ydoc { const copy = new Ydoc() const update = encodeStateAsUpdate(ydoc) applyUpdate(copy, update) return copy } - function updateEditor (editor: Editor, ydoc: Ydoc, field?: string): void { + function updateEditor(editor: Editor, ydoc: Ydoc, field?: string): void { const r = calculateDecorations(editor, oldContent, createYdocDocument(editor.schema, ydoc, field)) if (r !== undefined) { oldContent = r.oldContent @@ -65,12 +65,12 @@ } const DecorationExtension = Extension.create({ - addProseMirrorPlugins () { + addProseMirrorPlugins() { return [ new Plugin({ key: new PluginKey('diffs'), props: { - decorations () { + decorations() { updateDecorations() return _decoration } diff --git a/plugins/text-editor-resources/src/components/CollaborationUsers.svelte b/plugins/text-editor-resources/src/components/CollaborationUsers.svelte index d04f3f6c1c..a8718736ec 100644 --- a/plugins/text-editor-resources/src/components/CollaborationUsers.svelte +++ b/plugins/text-editor-resources/src/components/CollaborationUsers.svelte @@ -41,7 +41,7 @@ }) } - function goToCursor (state: AwarenessState): void { + function goToCursor(state: AwarenessState): void { const cursor = state.cursor if (cursor?.head != null) { try { diff --git a/plugins/text-editor-resources/src/components/CollaborativeAttributeBox.svelte b/plugins/text-editor-resources/src/components/CollaborativeAttributeBox.svelte index fd97c648a2..5fd2d094c1 100644 --- a/plugins/text-editor-resources/src/components/CollaborativeAttributeBox.svelte +++ b/plugins/text-editor-resources/src/components/CollaborativeAttributeBox.svelte @@ -36,11 +36,11 @@ export let focusIndex = -1 - export function isFocused (): boolean { + export function isFocused(): boolean { return editor?.isFocused() ?? false } - export function removeAttachment (id: string): void { + export function removeAttachment(id: string): void { return editor?.removeAttachment(id) } diff --git a/plugins/text-editor-resources/src/components/CollaborativeTextEditor.svelte b/plugins/text-editor-resources/src/components/CollaborativeTextEditor.svelte index 50ea48d5f9..fde19c1104 100644 --- a/plugins/text-editor-resources/src/components/CollaborativeTextEditor.svelte +++ b/plugins/text-editor-resources/src/components/CollaborativeTextEditor.svelte @@ -180,21 +180,21 @@ } } - function handleAction (a: RefAction, evt?: MouseEvent): void { + function handleAction(a: RefAction, evt?: MouseEvent): void { a.action(evt?.target as HTMLElement, editorHandler, evt) } $: commandHandler = textEditorCommandHandler(editor) - export function commands (): TextEditorCommandHandler | undefined { + export function commands(): TextEditorCommandHandler | undefined { return commandHandler } - export function removeAttachment (id: string): void { + export function removeAttachment(id: string): void { editor.commands.command(deleteAttachment(id)) } - export function isEditable (): boolean { + export function isEditable(): boolean { return editor?.isEditable ?? false } @@ -202,12 +202,12 @@ let focused = false let posFocus: FocusPosition | undefined = undefined - export function focus (position?: FocusPosition): void { + export function focus(position?: FocusPosition): void { posFocus = position needFocus = true } - export function isFocused (): boolean { + export function isFocused(): boolean { return focused } @@ -228,11 +228,11 @@ let inputImage: HTMLInputElement - export function handleAttachImage (): void { + export function handleAttachImage(): void { inputImage.click() } - async function createInlineImage (file: File): Promise { + async function createInlineImage(file: File): Promise { if (!file.type.startsWith('image/') || attachFile === undefined) { return } @@ -258,7 +258,7 @@ ) } - async function fileSelected (): Promise { + async function fileSelected(): Promise { if (readonly) return const list = inputImage.files if (list === null || list.length === 0) return @@ -271,7 +271,7 @@ inputImage.value = '' } - async function handleLeftMenuClick (id: string, pos: number, targetItem?: MouseEvent | HTMLElement): Promise { + async function handleLeftMenuClick(id: string, pos: number, targetItem?: MouseEvent | HTMLElement): Promise { editor.commands.focus(pos, { scrollIntoView: false }) switch (id) { @@ -325,7 +325,7 @@ } const savedBoards: Record = {} - function getSavedBoard (id: string): SavedBoard { + function getSavedBoard(id: string): SavedBoard { let board = savedBoards[id] if (board === undefined) { const ydoc = new YDoc({ guid: id, gc: false }) diff --git a/plugins/text-editor-resources/src/components/CollaboratorEditor.svelte b/plugins/text-editor-resources/src/components/CollaboratorEditor.svelte index c1ad1ff5e1..cd5b008888 100644 --- a/plugins/text-editor-resources/src/components/CollaboratorEditor.svelte +++ b/plugins/text-editor-resources/src/components/CollaboratorEditor.svelte @@ -49,19 +49,19 @@ let collaborativeEditor: CollaborativeTextEditor - export function commands (): TextEditorCommandHandler | undefined { + export function commands(): TextEditorCommandHandler | undefined { return collaborativeEditor?.commands() } - export function focus (position?: FocusPosition): void { + export function focus(position?: FocusPosition): void { collaborativeEditor?.focus(position) } - export function isFocused (): boolean { + export function isFocused(): boolean { return collaborativeEditor?.isFocused() ?? false } - export function removeAttachment (id: string): void { + export function removeAttachment(id: string): void { collaborativeEditor?.removeAttachment(id) } @@ -80,7 +80,7 @@ } } - function handleFocus (): void { + function handleFocus(): void { updateFocus() } diff --git a/plugins/text-editor-resources/src/components/DrawingBoardEditor.svelte b/plugins/text-editor-resources/src/components/DrawingBoardEditor.svelte index 331d324fc2..e3feaebfa6 100644 --- a/plugins/text-editor-resources/src/components/DrawingBoardEditor.svelte +++ b/plugins/text-editor-resources/src/components/DrawingBoardEditor.svelte @@ -91,7 +91,7 @@ $: onReadonlyChanged(readonly) $: onOffsetChanged(offset) - function onSavedCommandsChanged (): void { + function onSavedCommandsChanged(): void { model = commandsProcessor.snapshot() setTimeout(() => { const status = commandsProcessor.getUndoRedoAvailability() @@ -100,7 +100,7 @@ }) } - function showCommandProps (id: CommandUid): void { + function showCommandProps(id: CommandUid): void { changingCmdId = id for (const command of model) { if (command.id === id) { @@ -114,19 +114,19 @@ } } - function changeCommand (cmd: DrawingCmd): void { + function changeCommand(cmd: DrawingCmd): void { changingCmdId = undefined cmdEditor = undefined commandsProcessor.changeCommand(cmd) } - function deleteCommand (id: CommandUid): void { + function deleteCommand(id: CommandUid): void { changingCmdId = undefined cmdEditor = undefined commandsProcessor.deleteCommand(id) } - function onSelectedChanged (newSelected: boolean): void { + function onSelectedChanged(newSelected: boolean): void { if (oldSelected !== newSelected) { if (oldSelected && !newSelected && changingCmdId !== undefined) { changingCmdId = undefined @@ -136,7 +136,7 @@ } } - function onReadonlyChanged (newReadonly: boolean): void { + function onReadonlyChanged(newReadonly: boolean): void { if (oldReadonly !== newReadonly) { if (!newReadonly) { commandsProcessor.ensureAllCommandsWithUids() @@ -145,19 +145,19 @@ } } - function onOffsetChanged (offset: Point): void { + function onOffsetChanged(offset: Point): void { if (sendLiveData !== undefined) { sendLiveData(dataTopicOffset, { boardId, offset: { ...offset } }) } } - function onPointerMoved (canvasPos: Point): void { + function onPointerMoved(canvasPos: Point): void { if (sendLiveData !== undefined && selected && !panning) { sendLiveData(dataTopicCursor, { boardId, cursorPos: { ...canvasPos } }) } } - async function onFolloweeData (data: any): Promise { + async function onFolloweeData(data: any): Promise { if (data === undefined) { followee = undefined personCursorVisible = false diff --git a/plugins/text-editor-resources/src/components/DrawingBoardNodeView.svelte b/plugins/text-editor-resources/src/components/DrawingBoardNodeView.svelte index c4adcb6a36..f6fb57828f 100644 --- a/plugins/text-editor-resources/src/components/DrawingBoardNodeView.svelte +++ b/plugins/text-editor-resources/src/components/DrawingBoardNodeView.svelte @@ -41,18 +41,18 @@ let loading = true let loadingTimer: any - function resizeStart (y: number): void { + function resizeStart(y: number): void { const height = node.attrs.height ?? defaultHeight startY = y - height resizedHeight = height } - function resizeContinue (y: number): void { + function resizeContinue(y: number): void { resizedHeight = Math.max(minHeight, y - startY) resizedHeight = Math.min(maxHeight, resizedHeight) } - function resizeFinish (): void { + function resizeFinish(): void { if (resizedHeight !== undefined) { if (typeof getPos === 'function') { const tr = editor.state.tr.setNodeMarkup(getPos(), undefined, { ...node.attrs, height: resizedHeight }) @@ -62,7 +62,7 @@ } } - function onResizerPointerDown (e: PointerEvent): void { + function onResizerPointerDown(e: PointerEvent): void { e.preventDefault() resizer.setPointerCapture(e.pointerId) resizer.addEventListener('pointermove', onResizerPointerMove) @@ -71,12 +71,12 @@ resizeStart(e.clientY) } - function onResizerPointerMove (e: PointerEvent): void { + function onResizerPointerMove(e: PointerEvent): void { e.preventDefault() resizeContinue(e.clientY) } - function onResizerPointerUp (e: PointerEvent): void { + function onResizerPointerUp(e: PointerEvent): void { e.preventDefault() resizer.releasePointerCapture(e.pointerId) resizer.removeEventListener('pointermove', onResizerPointerMove) @@ -85,7 +85,7 @@ resizeFinish() } - function onResizerTouchStart (e: TouchEvent): void { + function onResizerTouchStart(e: TouchEvent): void { const touch = e.changedTouches[0] resizerTouchId = touch.identifier resizer.addEventListener('touchmove', onResizerTouchMove) @@ -94,7 +94,7 @@ resizeStart(touch.clientY) } - function onResizerTouchMove (e: TouchEvent): void { + function onResizerTouchMove(e: TouchEvent): void { for (let i = 0; i < e.changedTouches.length; i++) { const touch = e.changedTouches[i] if (touch.identifier === resizerTouchId) { @@ -104,7 +104,7 @@ } } - function onResizerTouchEnd (): void { + function onResizerTouchEnd(): void { resizer.removeEventListener('touchmove', onResizerTouchMove) resizer.removeEventListener('touchend', onResizerTouchEnd) resizer.removeEventListener('touchcancel', onResizerTouchEnd) diff --git a/plugins/text-editor-resources/src/components/DummyPopup.svelte b/plugins/text-editor-resources/src/components/DummyPopup.svelte index e1f9220783..48983d5fb2 100644 --- a/plugins/text-editor-resources/src/components/DummyPopup.svelte +++ b/plugins/text-editor-resources/src/components/DummyPopup.svelte @@ -1,5 +1,5 @@ diff --git a/plugins/text-editor-resources/src/components/InlineCommandsList.svelte b/plugins/text-editor-resources/src/components/InlineCommandsList.svelte index 5b6a76f6a1..d363a35290 100644 --- a/plugins/text-editor-resources/src/components/InlineCommandsList.svelte +++ b/plugins/text-editor-resources/src/components/InlineCommandsList.svelte @@ -52,13 +52,13 @@ dummyPopup.close() }) - export function onKeyDown (ev: KeyboardEvent): boolean { + export function onKeyDown(ev: KeyboardEvent): boolean { return menuPopup?.onKeydown(ev) } - export function done (): void {} + export function done(): void {} - function updateStyle (): void { + function updateStyle(): void { const rect = clientRect() const wDoc = $deviceInfo.docWidth const hDoc = $deviceInfo.docHeight @@ -87,7 +87,7 @@ let wPopup: number = 0 - function handleSelected (id: any): void { + function handleSelected(id: any): void { command({ id }) } diff --git a/plugins/text-editor-resources/src/components/LinkPopup.svelte b/plugins/text-editor-resources/src/components/LinkPopup.svelte index cd7ef28097..34bb5e3108 100644 --- a/plugins/text-editor-resources/src/components/LinkPopup.svelte +++ b/plugins/text-editor-resources/src/components/LinkPopup.svelte @@ -24,7 +24,7 @@ const dispatch = createEventDispatcher() const linkPlaceholder = getEmbeddedLabel('http://my.link.net') - function save (): void { + function save(): void { dispatch('update', link) } diff --git a/plugins/text-editor-resources/src/components/MarkupDiffViewer.svelte b/plugins/text-editor-resources/src/components/MarkupDiffViewer.svelte index 490e29fcd9..34e0ed776e 100644 --- a/plugins/text-editor-resources/src/components/MarkupDiffViewer.svelte +++ b/plugins/text-editor-resources/src/components/MarkupDiffViewer.svelte @@ -41,7 +41,7 @@ let decorateFailed = false let editorMountFailed = false - function updateEditor (editor: Editor, comparedVersion?: MarkupNode): void { + function updateEditor(editor: Editor, comparedVersion?: MarkupNode): void { if (comparedVersion === undefined) { return } @@ -68,12 +68,12 @@ // TODO: should be implemented as regular plugin const DecorationExtension = Extension.create({ - addProseMirrorPlugins () { + addProseMirrorPlugins() { return [ new Plugin({ key: new PluginKey('diffs'), props: { - decorations () { + decorations() { updateDecorations() return _decoration } diff --git a/plugins/text-editor-resources/src/components/MentionList.svelte b/plugins/text-editor-resources/src/components/MentionList.svelte index 3f94507176..e31ad797a9 100644 --- a/plugins/text-editor-resources/src/components/MentionList.svelte +++ b/plugins/text-editor-resources/src/components/MentionList.svelte @@ -48,7 +48,7 @@ dummyPopup.close() }) - function dispatchItem (item: { id: string, label: string, objectclass: string }): void { + function dispatchItem(item: { id: string, label: string, objectclass: string }): void { if (item == null) { close() } else { @@ -58,13 +58,13 @@ let searchPopup: MentionPopup - export function onKeyDown (ev: KeyboardEvent): boolean { + export function onKeyDown(ev: KeyboardEvent): boolean { return searchPopup?.onKeyDown(ev) } - export function done (): void {} + export function done(): void {} - function updateStyle (): void { + function updateStyle(): void { const rect = clientRect() const wDoc = $deviceInfo.docWidth const hDoc = $deviceInfo.docHeight diff --git a/plugins/text-editor-resources/src/components/MentionPopup.svelte b/plugins/text-editor-resources/src/components/MentionPopup.svelte index 18a3dd9345..6bce2c3b0f 100644 --- a/plugins/text-editor-resources/src/components/MentionPopup.svelte +++ b/plugins/text-editor-resources/src/components/MentionPopup.svelte @@ -37,11 +37,11 @@ let items: SearchItem[] = [] - function getReferenceVersionsProvider (doc: SearchResultDoc['doc']): ReferenceVersionsProvider | undefined { + function getReferenceVersionsProvider(doc: SearchResultDoc['doc']): ReferenceVersionsProvider | undefined { return client.getHierarchy().classHierarchyMixin(doc._class, view.mixin.ReferenceVersionsProvider) } - function getVersionableDoc (doc: SearchResultDoc['doc']): VersionableDoc | undefined { + function getVersionableDoc(doc: SearchResultDoc['doc']): VersionableDoc | undefined { const enabled = client.getHierarchy().classHierarchyMixin(doc._class, core.mixin.VersionableClass)?.enabled if (enabled !== true) return @@ -51,11 +51,11 @@ return versionedDoc } - function hasReferenceVersions (doc: SearchResultDoc['doc']): boolean { + function hasReferenceVersions(doc: SearchResultDoc['doc']): boolean { return getReferenceVersionsProvider(doc) !== undefined || getVersionableDoc(doc) !== undefined } - async function getReferenceVersions (doc: SearchResultDoc['doc']): Promise { + async function getReferenceVersions(doc: SearchResultDoc['doc']): Promise { const provider = getReferenceVersionsProvider(doc) if (provider !== undefined) { const providerFn = await getResource(provider.provider) @@ -81,7 +81,7 @@ ) } - async function getLatestReference (item: SearchResultDoc): Promise { + async function getLatestReference(item: SearchResultDoc): Promise { return { id: item.doc._id, objectclass: item.doc._class, @@ -89,7 +89,7 @@ } } - function selectReference (props: ReferenceVersion): void { + function selectReference(props: ReferenceVersion): void { dispatch('close', props) } @@ -104,7 +104,7 @@ .getModel() .findAllSync(presentation.class.ObjectSearchCategory, { classToSearch: contact.mixin.Employee })[0] - async function getMultipleEmployeeSearchItems (localQuery: string, lastIndex: number): Promise { + async function getMultipleEmployeeSearchItems(localQuery: string, lastIndex: number): Promise { if (!multipleMentions) return [] if (employeeSearchCategory === undefined) return [] @@ -156,7 +156,7 @@ .map((it, idx) => ({ ...it, num: lastIndex + 1 + idx })) } - async function handleSelectItem (item: SearchResultDoc): Promise { + async function handleSelectItem(item: SearchResultDoc): Promise { if ([contact.mention.Here, contact.mention.Everyone].includes(item.id as any)) { dispatch('close', { id: item.doc._id, @@ -180,7 +180,7 @@ }) } - export function onKeyDown (key: KeyboardEvent): boolean { + export function onKeyDown(key: KeyboardEvent): boolean { if (key.key === 'ArrowDown') { key.stopPropagation() key.preventDefault() diff --git a/plugins/text-editor-resources/src/components/MentionVersionPopup.svelte b/plugins/text-editor-resources/src/components/MentionVersionPopup.svelte index 444194e02e..d0f52d2c73 100644 --- a/plugins/text-editor-resources/src/components/MentionVersionPopup.svelte +++ b/plugins/text-editor-resources/src/components/MentionVersionPopup.svelte @@ -25,12 +25,12 @@ const dispatch = createEventDispatcher() - function selectLatest (): void { + function selectLatest(): void { onSelect(latest) dispatch('close') } - function selectVersion (version: ReferenceVersion): void { + function selectVersion(version: ReferenceVersion): void { onSelect(version) dispatch('close') } diff --git a/plugins/text-editor-resources/src/components/ReferenceInput.svelte b/plugins/text-editor-resources/src/components/ReferenceInput.svelte index 249cebd31f..b4da72ec02 100644 --- a/plugins/text-editor-resources/src/components/ReferenceInput.svelte +++ b/plugins/text-editor-resources/src/components/ReferenceInput.svelte @@ -75,7 +75,7 @@ $: isEmptyContent = isEmpty || isEmptyMarkup(content) $: canSubmit = (haveAttachment || !isEmptyContent) && !loading - function setContent (content: Markup): void { + function setContent(content: Markup): void { editor?.setContent(content) } @@ -92,7 +92,7 @@ insertTemplate: (name, markup) => { editor?.insertMarkup(markup) }, - insertTable (options: { rows?: number, cols?: number, withHeaderRow?: boolean }) { + insertTable(options: { rows?: number, cols?: number, withHeaderRow?: boolean }) { editor?.insertTable(options) }, insertCodeBlock: () => { @@ -121,11 +121,11 @@ .concat(...modelActions) .sort((a, b) => a.order - b.order) - export function submit (): void { + export function submit(): void { editor?.submit() } - function handleAction (a: RefAction, evt?: Event): void { + function handleAction(a: RefAction, evt?: Event): void { a.action(evt?.target as HTMLElement, editorHandler) } diff --git a/plugins/text-editor-resources/src/components/StyledTextArea.svelte b/plugins/text-editor-resources/src/components/StyledTextArea.svelte index 560e4cf5a9..096d7eb9b4 100644 --- a/plugins/text-editor-resources/src/components/StyledTextArea.svelte +++ b/plugins/text-editor-resources/src/components/StyledTextArea.svelte @@ -30,13 +30,13 @@ let editor: StyledTextEditor - export function submit (): void { + export function submit(): void { editor.submit() } - export function isEditable (): boolean { + export function isEditable(): boolean { return editor.isEditable() } - export function setEditable (editable: boolean): void { + export function setEditable(editable: boolean): void { editor.setEditable(editable) } const dispatch = createEventDispatcher() diff --git a/plugins/text-editor-resources/src/components/StyledTextBox.svelte b/plugins/text-editor-resources/src/components/StyledTextBox.svelte index d20cfe480a..0adf7e449f 100644 --- a/plugins/text-editor-resources/src/components/StyledTextBox.svelte +++ b/plugins/text-editor-resources/src/components/StyledTextBox.svelte @@ -58,17 +58,17 @@ } export let mode = Mode.View - export function startEdit (): void { + export function startEdit(): void { rawValue = content ?? EmptyMarkup needFocus = true mode = Mode.Edit } - export function saveEdit (): void { + export function saveEdit(): void { dispatch('value', rawValue) content = rawValue mode = Mode.View } - export function cancelEdit (): void { + export function cancelEdit(): void { rawValue = content mode = Mode.View } @@ -96,23 +96,23 @@ $: editor?.setEditable(!readonly) - export function submit (): void { + export function submit(): void { editor.submit() } - export function focus (): void { + export function focus(): void { editor.focus() } - export function isEditable (): boolean { + export function isEditable(): boolean { return editor.isEditable() } - export function setEditable (editable: boolean): void { + export function setEditable(editable: boolean): void { editor.setEditable(editable) } - export function setContent (data: string): void { + export function setContent(data: string): void { editor.setContent(data) } - export function isFocused (): boolean { + export function isFocused(): boolean { return focused } let needFocus = false @@ -164,11 +164,11 @@ /** * @public */ - export function removeAttachment (id: string): void { + export function removeAttachment(id: string): void { editor.removeAttachment(id) } - async function handleCommandSelected (id: string, pos: number, targetItem?: MouseEvent | HTMLElement): Promise { + async function handleCommandSelected(id: string, pos: number, targetItem?: MouseEvent | HTMLElement): Promise { switch (id) { case 'image': handleAttachImage() @@ -197,11 +197,11 @@ let inputImage: HTMLInputElement - export function handleAttachImage (): void { + export function handleAttachImage(): void { inputImage.click() } - async function createInlineImage (file: File): Promise { + async function createInlineImage(file: File): Promise { if (!file.type.startsWith('image/') || attachFile === undefined) { return } @@ -227,7 +227,7 @@ ) } - async function fileSelected (): Promise { + async function fileSelected(): Promise { const list = inputImage.files if (list === null || list.length === 0) return for (let index = 0; index < list.length; index++) { diff --git a/plugins/text-editor-resources/src/components/StyledTextEditor.svelte b/plugins/text-editor-resources/src/components/StyledTextEditor.svelte index 9e3c9bcf9c..3d6c616b57 100644 --- a/plugins/text-editor-resources/src/components/StyledTextEditor.svelte +++ b/plugins/text-editor-resources/src/components/StyledTextEditor.svelte @@ -44,28 +44,28 @@ let editor: TextEditor | undefined = undefined - export function submit (): void { + export function submit(): void { editor?.submit() } - export function focus (): void { + export function focus(): void { editor?.focus() } - export function isEditable (): boolean { + export function isEditable(): boolean { return editor?.isEditable() ?? false } - export function setEditable (editable: boolean): void { + export function setEditable(editable: boolean): void { editor?.setEditable(editable) } - export function getContent (): Markup { + export function getContent(): Markup { return content } - export function setContent (data: Markup): void { + export function setContent(data: Markup): void { editor?.setContent(data) } - export function insertText (text: string): void { + export function insertText(text: string): void { editor?.insertText(text) } - export function getEditor (): Editor | undefined { + export function getEditor(): Editor | undefined { return editor?.getEditor() } @@ -92,7 +92,7 @@ editor?.insertMarkup(markup) dispatch('template', name) }, - insertTable (options: { rows?: number, cols?: number, withHeaderRow?: boolean }) { + insertTable(options: { rows?: number, cols?: number, withHeaderRow?: boolean }) { editor?.insertTable(options) }, insertCodeBlock: (pos?: number) => { @@ -123,7 +123,7 @@ full ? { class: 'text-editor-view_full-height' } : { class: 'text-editor-view_compact' } ) - function handleAction (a: RefAction, evt?: Event): void { + function handleAction(a: RefAction, evt?: Event): void { a.action(evt?.target as HTMLElement, editorHandler) } @@ -147,7 +147,7 @@ /** * @public */ - export function removeAttachment (id: string): void { + export function removeAttachment(id: string): void { editor?.removeAttachment(id) } diff --git a/plugins/text-editor-resources/src/components/TextActionButton.svelte b/plugins/text-editor-resources/src/components/TextActionButton.svelte index df93e82ff5..6a24d99fcb 100644 --- a/plugins/text-editor-resources/src/components/TextActionButton.svelte +++ b/plugins/text-editor-resources/src/components/TextActionButton.svelte @@ -44,7 +44,7 @@ }) } - async function updateSelected (e: Editor, { isActive }: TextEditorAction): Promise { + async function updateSelected(e: Editor, { isActive }: TextEditorAction): Promise { if (isActive === undefined) { selected = false return @@ -59,7 +59,7 @@ } } - async function handleClick (event: MouseEvent): Promise { + async function handleClick(event: MouseEvent): Promise { if (blockMouseEvents) { event.preventDefault() event.stopPropagation() diff --git a/plugins/text-editor-resources/src/components/TextEditor.svelte b/plugins/text-editor-resources/src/components/TextEditor.svelte index ed1d95d1c2..25aeaf72d8 100644 --- a/plugins/text-editor-resources/src/components/TextEditor.svelte +++ b/plugins/text-editor-resources/src/components/TextEditor.svelte @@ -46,49 +46,49 @@ const dispatch = createEventDispatcher() - export function isEditable (): boolean { + export function isEditable(): boolean { return editor?.isEditable } - export function setEditable (editable: boolean): void { + export function setEditable(editable: boolean): void { if (editor !== undefined) { editor.setEditable(editable) } } - export function submit (): void { + export function submit(): void { content = getContent() dispatch('content', content) } - export function getContent (): Markup { + export function getContent(): Markup { return getMarkup(editor) } - export function setContent (newContent: Markup): void { + export function setContent(newContent: Markup): void { if (editor !== undefined && content !== newContent) { content = newContent editor.commands.setContent(markupToJSON(content)) } } - export function clear (): void { + export function clear(): void { if (editor !== undefined) { content = EmptyMarkup editor.commands.clearContent(true) } } - export function getEditor (): Editor { + export function getEditor(): Editor { return editor } - export function insertEmoji (text: string, image?: Ref): void { + export function insertEmoji(text: string, image?: Ref): void { editor?.commands.insertEmoji(text, image === undefined ? 'unicode' : 'image', image) } - export function insertText (text: string): void { + export function insertText(text: string): void { editor?.commands.insertContent(text) } - export function insertTable (options: { rows?: number, cols?: number, withHeaderRow?: boolean }) { + export function insertTable(options: { rows?: number, cols?: number, withHeaderRow?: boolean }) { editor?.commands.insertTable(options) } - export function insertCodeBlock (pos?: number): void { + export function insertCodeBlock(pos?: number): void { editor?.commands.insertContent( { type: 'codeBlock', @@ -103,10 +103,10 @@ editor?.commands.focus(pos, { scrollIntoView: false }) } } - export function insertSeparatorLine (): void { + export function insertSeparatorLine(): void { editor?.commands.setHorizontalRule() } - export function insertContent ( + export function insertContent( value: Content, options?: { parseOptions?: ParseOptions @@ -116,7 +116,7 @@ editor?.commands.insertContent(value, options) } - export function insertMarkup (markup: Markup): void { + export function insertMarkup(markup: Markup): void { editor?.commands.insertContent(markupToJSON(markup)) } @@ -124,7 +124,7 @@ let focused = false let posFocus: FocusPosition | undefined = undefined - export function focus (position?: FocusPosition): void { + export function focus(position?: FocusPosition): void { posFocus = position needFocus = true } @@ -207,11 +207,11 @@ /** * @public */ - export function removeAttachment (id: string): void { + export function removeAttachment(id: string): void { editor.commands.command(deleteAttachment(id)) } - function handleFocus (): void { + function handleFocus(): void { needFocus = true } diff --git a/plugins/text-editor-resources/src/components/diff/decorations.ts b/plugins/text-editor-resources/src/components/diff/decorations.ts index 02e2833f44..2cdd18be05 100644 --- a/plugins/text-editor-resources/src/components/diff/decorations.ts +++ b/plugins/text-editor-resources/src/components/diff/decorations.ts @@ -45,9 +45,9 @@ export function calculateDecorations ( comparedDoc?: ProseMirrorNode ): | { - decorations: DecorationSet - oldContent: MarkupNode - } + decorations: DecorationSet + oldContent: MarkupNode + } | undefined { try { if (editor?.schema === undefined) { diff --git a/plugins/text-editor-resources/src/components/extension/codeSnippets/codeblock.ts b/plugins/text-editor-resources/src/components/extension/codeSnippets/codeblock.ts index 9891999169..d89ca21a0f 100644 --- a/plugins/text-editor-resources/src/components/extension/codeSnippets/codeblock.ts +++ b/plugins/text-editor-resources/src/components/extension/codeSnippets/codeblock.ts @@ -42,51 +42,51 @@ export const CodeBlockHighlighExtension = CodeBlockLowlight.extend - ({ commands }) => { - return commands.setNode(this.name, attributes) - }, + ({ commands }) => { + return commands.setNode(this.name, attributes) + }, toggleCodeBlock: (attributes) => - ({ chain, commands, state }) => { - const { from, to } = state.selection - - // merge multiple paragraphs into codeblock - if (!isActive(state, this.name) && !state.selection.empty) { - let hasParagraphsOnlySelected = true - const textArr: string[] = [] - state.doc.nodesBetween(from, to, (node, pos) => { - if (node.isInline) { - return false - } - if (node.type.name !== 'paragraph') { - if (pos + 1 <= from && pos + node.nodeSize - 1 >= to) { + ({ chain, commands, state }) => { + const { from, to } = state.selection + + // merge multiple paragraphs into codeblock + if (!isActive(state, this.name) && !state.selection.empty) { + let hasParagraphsOnlySelected = true + const textArr: string[] = [] + state.doc.nodesBetween(from, to, (node, pos) => { + if (node.isInline) { + return false + } + if (node.type.name !== 'paragraph') { + if (pos + 1 <= from && pos + node.nodeSize - 1 >= to) { // skip nodes outside of the selected range - return false - } else { - // cannot merge non-paragraph nodes inside selection - hasParagraphsOnlySelected = false - return false - } + return false } else { - const selectedText = (node.textContent ?? '').slice( - pos + 1 > from ? 0 : from - pos - 1, - pos + node.nodeSize - 1 < to ? node.nodeSize - 1 : to - pos - 1 - ) - textArr.push(selectedText ?? '') + // cannot merge non-paragraph nodes inside selection + hasParagraphsOnlySelected = false + return false } - }) - if (hasParagraphsOnlySelected && textArr.length > 1) { - return chain() - .command(({ state, tr }) => { - tr.replaceRangeWith(from, to, this.type.create(attributes, state.schema.text(textArr.join('\n')))) - return true - }) - .setTextSelection({ from: from + 2, to: from + 2 }) - .run() + } else { + const selectedText = (node.textContent ?? '').slice( + pos + 1 > from ? 0 : from - pos - 1, + pos + node.nodeSize - 1 < to ? node.nodeSize - 1 : to - pos - 1 + ) + textArr.push(selectedText ?? '') } + }) + if (hasParagraphsOnlySelected && textArr.length > 1) { + return chain() + .command(({ state, tr }) => { + tr.replaceRangeWith(from, to, this.type.create(attributes, state.schema.text(textArr.join('\n')))) + return true + }) + .setTextSelection({ from: from + 2, to: from + 2 }) + .run() } - return commands.toggleNode(this.name, 'paragraph', attributes) } + return commands.toggleNode(this.name, 'paragraph', attributes) + } } }, diff --git a/plugins/text-editor-resources/src/components/extension/drawingBoard.ts b/plugins/text-editor-resources/src/components/extension/drawingBoard.ts index 39fb867d9f..bbee95aa22 100644 --- a/plugins/text-editor-resources/src/components/extension/drawingBoard.ts +++ b/plugins/text-editor-resources/src/components/extension/drawingBoard.ts @@ -102,19 +102,19 @@ export const DrawingBoardExtension = Node.create({ return { showDrawingBoardPopup: () => - ({ state }) => { - if (state.selection instanceof NodeSelection) { - const node = state.selection.node - if (node?.type.name === this.name) { - const board = this.options.getSavedBoard(node.attrs.id) - if (!board.loading) { - showBoardPopup(node.attrs.id, board, this.editor) - } - return true + ({ state }) => { + if (state.selection instanceof NodeSelection) { + const node = state.selection.node + if (node?.type.name === this.name) { + const board = this.options.getSavedBoard(node.attrs.id) + if (!board.loading) { + showBoardPopup(node.attrs.id, board, this.editor) } + return true } - return false } + return false + } } }, diff --git a/plugins/text-editor-resources/src/components/extension/embed/embed.ts b/plugins/text-editor-resources/src/components/extension/embed/embed.ts index 9ce13bb8ca..6d56c07e71 100644 --- a/plugins/text-editor-resources/src/components/extension/embed/embed.ts +++ b/plugins/text-editor-resources/src/components/extension/embed/embed.ts @@ -15,7 +15,7 @@ import { getMetadata, translate } from '@hcengineering/platform' import { type ActionContext, copyTextToClipboard } from '@hcengineering/presentation' -import { EmbedNode as BaseEmbedNode, type ReferenceNodeProps } from '@hcengineering/text' +import { EmbedNode as BaseEmbedNode } from '@hcengineering/text' import textEditor from '@hcengineering/text-editor' import { type Editor, type Range } from '@tiptap/core' import { Fragment, type Node, type ResolvedPos, Slice } from '@tiptap/pm/model' @@ -247,7 +247,7 @@ function getNodeUrl (node?: Node | null): string | undefined { return link?.attrs.href ?? undefined } case 'reference': { - return buildReferenceUrl(node.attrs as ReferenceNodeProps) + return buildReferenceUrl(node.attrs) } case 'embed': { return node.attrs.src diff --git a/plugins/text-editor-resources/src/components/extension/embed/providers/drive.ts b/plugins/text-editor-resources/src/components/extension/embed/providers/drive.ts index a850be0666..1d35e5002d 100644 --- a/plugins/text-editor-resources/src/components/extension/embed/providers/drive.ts +++ b/plugins/text-editor-resources/src/components/extension/embed/providers/drive.ts @@ -64,7 +64,7 @@ export const DriveEmbedProvider: EmbedNodeProviderConstructor const pos = typeof getPos === 'function' ? getPos() : 0 setLoadingState(editor.view, pos, loading) } - const renderer = new SvelteRenderer(FilePreview as any, { + const renderer = new SvelteRenderer(FilePreview, { element: root, props: { file: version.file, diff --git a/plugins/text-editor-resources/src/components/extension/embed/providers/youtube.ts b/plugins/text-editor-resources/src/components/extension/embed/providers/youtube.ts index 6660d9cbbd..b7f1014027 100644 --- a/plugins/text-editor-resources/src/components/extension/embed/providers/youtube.ts +++ b/plugins/text-editor-resources/src/components/extension/embed/providers/youtube.ts @@ -227,6 +227,8 @@ export const getEmbedUrlFromYoutubeUrl = (url: string, options: YoutubeEmbedUrlO } export const YOUTUBE_REGEX = + // eslint-disable-next-line secure-coding/no-redos-vulnerable-regex /^((?:https?:)?\/\/)?((?:www|m|music)\.)?((?:youtube\.com|youtu.be|youtube-nocookie\.com))(\/(?:[\w-]+\?v=|embed\/|v\/)?)([\w-]+)(\S+)?$/ export const YOUTUBE_REGEX_GLOBAL = + // eslint-disable-next-line secure-coding/no-redos-vulnerable-regex /^((?:https?:)?\/\/)?((?:www|m|music)\.)?((?:youtube\.com|youtu.be|youtube-nocookie\.com))(\/(?:[\w-]+\?v=|embed\/|v\/)?)([\w-]+)(\S+)?$/g diff --git a/plugins/text-editor-resources/src/components/extension/imageExt.ts b/plugins/text-editor-resources/src/components/extension/imageExt.ts index 617db0de12..d60a73b2a4 100644 --- a/plugins/text-editor-resources/src/components/extension/imageExt.ts +++ b/plugins/text-editor-resources/src/components/extension/imageExt.ts @@ -66,36 +66,36 @@ export const ImageExtension = ImageNode.extend({ return { setImage: (options) => - ({ commands }) => { - return commands.insertContent({ - type: this.name, - attrs: options - }) - }, + ({ commands }) => { + return commands.insertContent({ + type: this.name, + attrs: options + }) + }, setImageAlignment: (options) => - ({ chain, tr, state }) => { - const cursor = getCursor(state) - if (cursor === null) return false - return chain() - .setNodeSelection(cursor.range.from) - .updateAttributes(this.name, { ...options }) - .setNodeSelection(cursor.range.from) - .run() - }, + ({ chain, tr, state }) => { + const cursor = getCursor(state) + if (cursor === null) return false + return chain() + .setNodeSelection(cursor.range.from) + .updateAttributes(this.name, { ...options }) + .setNodeSelection(cursor.range.from) + .run() + }, setImageSize: (options) => - ({ chain, tr, state }) => { - const cursor = getCursor(state) - if (cursor === null) return false - return chain() - .setNodeSelection(cursor.range.from) - .updateAttributes(this.name, { ...options }) - .setNodeSelection(cursor.range.from) - .run() - } + ({ chain, tr, state }) => { + const cursor = getCursor(state) + if (cursor === null) return false + return chain() + .setNodeSelection(cursor.range.from) + .updateAttributes(this.name, { ...options }) + .setNodeSelection(cursor.range.from) + .run() + } } }, diff --git a/plugins/text-editor-resources/src/components/extension/inlineComment.ts b/plugins/text-editor-resources/src/components/extension/inlineComment.ts index 6bd502ee43..c4d2c803b2 100644 --- a/plugins/text-editor-resources/src/components/extension/inlineComment.ts +++ b/plugins/text-editor-resources/src/components/extension/inlineComment.ts @@ -289,8 +289,8 @@ function buildCommentDecoratorState ( meta?.pointer?.focus !== undefined ? meta.pointer.focus : !isSelectionChanged - ? prev.pointer.focus - : new Set(), + ? prev.pointer.focus + : new Set(), hover: meta?.pointer?.hover !== undefined ? meta.pointer.hover : prev.pointer.hover } diff --git a/plugins/text-editor-resources/src/components/extension/mathematics.ts b/plugins/text-editor-resources/src/components/extension/mathematics.ts index 57bf63b15a..4fb9a1bde2 100644 --- a/plugins/text-editor-resources/src/components/extension/mathematics.ts +++ b/plugins/text-editor-resources/src/components/extension/mathematics.ts @@ -261,51 +261,51 @@ export const MathematicsExtension = Mathematics.extend({ return { insertMathInline: () => - ({ state, dispatch }) => { - const { selection } = state - const { from } = selection - - if (selection.empty) { - const boundaries = findInlineMathBoundaries(state) - if (boundaries !== null) { - if (dispatch !== undefined) { - dispatch( - state.tr - .delete(boundaries.after, boundaries.after + 1) - .delete(boundaries.before, boundaries.before + 1) - ) - } - return true + ({ state, dispatch }) => { + const { selection } = state + const { from } = selection + + if (selection.empty) { + const boundaries = findInlineMathBoundaries(state) + if (boundaries !== null) { + if (dispatch !== undefined) { + dispatch( + state.tr + .delete(boundaries.after, boundaries.after + 1) + .delete(boundaries.before, boundaries.before + 1) + ) } - const tr = state.tr.insertText('$ $', from) - if (dispatch !== undefined) dispatch(tr.setSelection(TextSelection.create(tr.doc, from + 2))) return true } + const tr = state.tr.insertText('$ $', from) + if (dispatch !== undefined) dispatch(tr.setSelection(TextSelection.create(tr.doc, from + 2))) + return true + } - return wrapWithMath(state, dispatch, '$') - }, + return wrapWithMath(state, dispatch, '$') + }, insertMathBlock: () => - ({ state, dispatch }) => { - const { selection } = state - const { from } = selection - - if (selection.empty) { - const tr = state.tr.insertText('$$ $$', from) - if (dispatch !== undefined) dispatch(tr.setSelection(TextSelection.create(tr.doc, from + 3))) - return true - } - - return wrapWithMath(state, dispatch, '$$') + ({ state, dispatch }) => { + const { selection } = state + const { from } = selection + + if (selection.empty) { + const tr = state.tr.insertText('$$ $$', from) + if (dispatch !== undefined) dispatch(tr.setSelection(TextSelection.create(tr.doc, from + 3))) + return true } + + return wrapWithMath(state, dispatch, '$$') + } } }, addProseMirrorPlugins () { return [ createMathPlugin(/\$\$([\s\S]+?)\$\$/g, { displayMode: true, throwOnError: false }, this.editor, shouldRender), createMathPlugin( - /(? - ({ commands }) => { - return commands.setMark(this.name, { title: text, kind }) - }, + ({ commands }) => { + return commands.setMark(this.name, { title: text, kind }) + }, unsetNote: () => - ({ commands }) => { - return commands.unsetMark(this.name) - } + ({ commands }) => { + return commands.unsetMark(this.name) + } } }, diff --git a/plugins/text-editor-resources/src/components/extension/popups/ColorPicker.svelte b/plugins/text-editor-resources/src/components/extension/popups/ColorPicker.svelte index d536c97adc..ce297d76bc 100644 --- a/plugins/text-editor-resources/src/components/extension/popups/ColorPicker.svelte +++ b/plugins/text-editor-resources/src/components/extension/popups/ColorPicker.svelte @@ -21,7 +21,7 @@ const dispatch = createEventDispatcher() - function handleSubmit (color: { color: string }): void { + function handleSubmit(color: { color: string }): void { dispatch('close', color) } diff --git a/plugins/text-editor-resources/src/components/extension/qms/qmsInlineComment.ts b/plugins/text-editor-resources/src/components/extension/qms/qmsInlineComment.ts index 5479a276d7..5ec989b294 100644 --- a/plugins/text-editor-resources/src/components/extension/qms/qmsInlineComment.ts +++ b/plugins/text-editor-resources/src/components/extension/qms/qmsInlineComment.ts @@ -203,10 +203,10 @@ export const QMSInlineCommentExtension: Extension[typeof ExtensionName] = { updateHighlight: () => - ({ view: { dispatch, state } }: CommandProps) => { - dispatch(state.tr.setMeta(ExtensionName, '')) - return true - } + ({ view: { dispatch, state } }: CommandProps) => { + dispatch(state.tr.setMeta(ExtensionName, '')) + return true + } } return result diff --git a/plugins/text-editor-resources/src/components/extension/qms/qmsInlineCommentMark.ts b/plugins/text-editor-resources/src/components/extension/qms/qmsInlineCommentMark.ts index 3627de1dc5..7cecda3b80 100644 --- a/plugins/text-editor-resources/src/components/extension/qms/qmsInlineCommentMark.ts +++ b/plugins/text-editor-resources/src/components/extension/qms/qmsInlineCommentMark.ts @@ -105,7 +105,7 @@ export const QMSInlineCommentMark = Mark.create({ return { [qmsInlineCommentMarkName]: { default: null, - parseHTML: (el) => (el as HTMLSpanElement).getAttribute(qmsInlineCommentMarkName) + parseHTML: (el) => el.getAttribute(qmsInlineCommentMarkName) } } }, @@ -115,7 +115,7 @@ export const QMSInlineCommentMark = Mark.create({ { tag: `span[${qmsInlineCommentMarkName}]`, getAttrs: (el) => { - const value = (el as HTMLSpanElement).getAttribute(qmsInlineCommentMarkName)?.trim() + const value = el.getAttribute(qmsInlineCommentMarkName)?.trim() if (value === null || value === undefined || value.length === 0) { return false } @@ -163,16 +163,16 @@ export const QMSInlineCommentMark = Mark.create({ return { setQMSInlineCommentMark: (uuid: string) => - ({ commands, state }: CommandProps) => { - if (state.selection.empty) { - return false - } - return commands.setMark(this.name, { [qmsInlineCommentMarkName]: uuid }) - }, + ({ commands, state }: CommandProps) => { + if (state.selection.empty) { + return false + } + return commands.setMark(this.name, { [qmsInlineCommentMarkName]: uuid }) + }, unsetQMSInlineCommentMark: () => - ({ commands }: CommandProps) => - commands.unsetMark(this.name) + ({ commands }: CommandProps) => + commands.unsetMark(this.name) } } }) diff --git a/plugins/text-editor-resources/src/components/extension/reference.ts b/plugins/text-editor-resources/src/components/extension/reference.ts index d657c99f74..1795bd9f26 100644 --- a/plugins/text-editor-resources/src/components/extension/reference.ts +++ b/plugins/text-editor-resources/src/components/extension/reference.ts @@ -24,7 +24,7 @@ import Suggestion, { type SuggestionKeyDownProps, type SuggestionOptions, type S import { type Blob, type Class, type Doc, type Ref } from '@hcengineering/core' import { getMetadata, getResource, translate } from '@hcengineering/platform' import presentation, { createQuery, getBlobRef, getClient, MessageBox } from '@hcengineering/presentation' -import view from '@hcengineering/view' +import view, { type ObjectTooltip, type ReferenceObjectProvider } from '@hcengineering/view' import activity, { type ActivityMessage } from '@hcengineering/activity' import contact from '@hcengineering/contact' import { parseLocation, showPopup, tooltip, type LabelAndProps, type Location, fromCodePoint } from '@hcengineering/ui' @@ -418,7 +418,7 @@ async function getReferenceTooltip ( const client = getClient() const hierarchy = client.getHierarchy() - const mixin = hierarchy.classHierarchyMixin(objectclass as Ref>, view.mixin.ObjectTooltip) + const mixin = hierarchy.classHierarchyMixin(objectclass, view.mixin.ObjectTooltip) if (mixin?.provider !== undefined) { const providerFn = await getResource(mixin.provider) @@ -489,8 +489,8 @@ export async function getReferenceObject ( return message } - const referenceObjectProvider = hierarchy.classHierarchyMixin( - objectclass as Ref>, + const referenceObjectProvider = hierarchy.classHierarchyMixin( + objectclass, view.mixin.ReferenceObjectProvider ) const referenceObjectProviderFn = @@ -641,7 +641,7 @@ function createEmojiElement (emojiCode: number | number[] | Ref): HTMLElem color: 'black' }) - const value = parseEmoji(emojiCode as any) + const value = parseEmoji(emojiCode) if (value !== undefined) { root.textContent = value return root diff --git a/plugins/text-editor-resources/src/components/extension/shortcuts/imageUpload.ts b/plugins/text-editor-resources/src/components/extension/shortcuts/imageUpload.ts index df0e80795e..cc3b898833 100644 --- a/plugins/text-editor-resources/src/components/extension/shortcuts/imageUpload.ts +++ b/plugins/text-editor-resources/src/components/extension/shortcuts/imageUpload.ts @@ -12,14 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. // +import { generateId, type Blob, type Ref } from '@hcengineering/core' import { setPlatformStatus, unknownError } from '@hcengineering/platform' import { imageSizeToRatio, getImageSize } from '@hcengineering/presentation' import { Extension } from '@tiptap/core' +import { type Node } from '@tiptap/pm/model' import { Plugin, PluginKey } from '@tiptap/pm/state' import { type EditorView } from '@tiptap/pm/view' import { type FileAttachFunction } from '../types' -import type { Blob, Ref } from '@hcengineering/core' /** * @public @@ -45,6 +46,73 @@ export const ImageUploadExtension = Extension.create { + let imagePosition: number | undefined + + view.state.doc.descendants((currentNode, position) => { + if (!currentNode.isText || currentNode.text === undefined) return + + const offset = currentNode.text.indexOf(placeholder) + if (offset !== -1) { + imagePosition = position + offset + return false + } + }) + + if (imagePosition !== undefined) { + view.dispatch(view.state.tr.replaceWith(imagePosition, imagePosition + placeholder.length, node)) + } + } + + const uploadInlineImage = async ( + view: EditorView, + source: string, + placeholder: string, + alt: string + ): Promise => { + if (attachFile === undefined) return + + try { + const response = await fetch(source) + const blob = await response.blob() + if (!blob.type.startsWith('image/')) return + + const file = new File([blob], getInlineImageName(blob.type, alt), { type: blob.type }) + const attached = await attachFile(file) + if (attached === undefined) return + + const size = await getImageSize(file) + const node = view.state.schema.nodes.image.create({ + 'file-id': attached.file, + 'data-file-type': file.type, + src: getFileUrl(attached.file), + alt: alt || file.name, + title: alt || file.name, + width: imageSizeToRatio(size.width, size.pixelRatio) + }) + + replacePendingInlineImage(view, placeholder, node) + } catch (err) { + void setPlatformStatus(unknownError(err)) + } + } + + const transformPastedHTML = (html: string, view: EditorView): string => { + if (attachFile === undefined || !html.includes('data:image/')) return html + + const document = new DOMParser().parseFromString(html, 'text/html') + document.querySelectorAll('img[src^="data:image/"]').forEach((image) => { + const source = image.getAttribute('src') + if (source !== null) { + const placeholder = `[Uploading image ${generateId()}]` + image.replaceWith(document.createTextNode(placeholder)) + void uploadInlineImage(view, source, placeholder, image.getAttribute('alt') ?? '') + } + }) + + return document.body.innerHTML + } + function handleDrop ( view: EditorView, pos: { pos: number, inside: number } | null, @@ -95,6 +163,7 @@ export const ImageUploadExtension = Extension.create + // eslint-disable-next-line secure-coding/no-redos-vulnerable-regex const commentRegex = new RegExp(``, 's') const match = text.match(commentRegex) if (match?.[1] !== undefined) { diff --git a/plugins/text-editor-resources/src/components/extension/table/TableNodeView.svelte b/plugins/text-editor-resources/src/components/extension/table/TableNodeView.svelte index 191a4991ea..f72b6a5876 100644 --- a/plugins/text-editor-resources/src/components/extension/table/TableNodeView.svelte +++ b/plugins/text-editor-resources/src/components/extension/table/TableNodeView.svelte @@ -38,14 +38,14 @@ editor.on('selectionUpdate', handleSelectionUpdate) let focused = false - function handleSelectionUpdate (): void { + function handleSelectionUpdate(): void { const from = getPos() const to = from + node.nodeSize focused = editor.state.selection.from <= to && editor.state.selection.to >= from && editor.isActive('table') } - function handleAddRow (evt: Event): void { + function handleAddRow(evt: Event): void { evt.stopPropagation() evt.preventDefault() const table = findTable(editor.state.selection) @@ -56,7 +56,7 @@ } } - function handleAddColumn (evt: Event): void { + function handleAddColumn(evt: Event): void { evt.stopPropagation() evt.preventDefault() const table = findTable(editor.state.selection) @@ -67,7 +67,7 @@ } } - function updateColumns (): void { + function updateColumns(): void { updateColumnsOnResize(node, colgroupElement, tableElement, 25) } @@ -86,7 +86,7 @@ editor.off('selectionUpdate', handleSelectionUpdate) }) - function onScroll (event: Event): void { + function onScroll(event: Event): void { if (editor === undefined) return const editorState = editor.state const currCursor = getToolbarCursor(editorState) diff --git a/plugins/text-editor-resources/src/components/extension/table/actions/OriginalTableDataViewer.svelte b/plugins/text-editor-resources/src/components/extension/table/actions/OriginalTableDataViewer.svelte index 972110d318..a7734e5aba 100644 --- a/plugins/text-editor-resources/src/components/extension/table/actions/OriginalTableDataViewer.svelte +++ b/plugins/text-editor-resources/src/components/extension/table/actions/OriginalTableDataViewer.svelte @@ -49,7 +49,7 @@ // Get component from viewlet descriptor lookup $: viewletComponent = viewletWithLookup?.$lookup?.descriptor?.component - function handleClose (): void { + function handleClose(): void { dispatch('close') } diff --git a/plugins/text-editor-resources/src/components/extension/table/actions/TableDiffViewer.svelte b/plugins/text-editor-resources/src/components/extension/table/actions/TableDiffViewer.svelte index c8d0b2515b..62dfe37f9c 100644 --- a/plugins/text-editor-resources/src/components/extension/table/actions/TableDiffViewer.svelte +++ b/plugins/text-editor-resources/src/components/extension/table/actions/TableDiffViewer.svelte @@ -33,7 +33,7 @@ $: oldContent = markdownToMarkup(oldMarkdown) $: newContent = markdownToMarkup(newMarkdown) - function handleClose (): void { + function handleClose(): void { dispatch('close') } diff --git a/plugins/text-editor-resources/src/components/extension/table/actions/TableRefreshConfirmation.svelte b/plugins/text-editor-resources/src/components/extension/table/actions/TableRefreshConfirmation.svelte index c09804c6ff..996d0ab0a9 100644 --- a/plugins/text-editor-resources/src/components/extension/table/actions/TableRefreshConfirmation.svelte +++ b/plugins/text-editor-resources/src/components/extension/table/actions/TableRefreshConfirmation.svelte @@ -35,12 +35,12 @@ $: oldContent = markdownToMarkup(oldMarkdown) $: newContent = markdownToMarkup(newMarkdown) - function handleApply (): void { + function handleApply(): void { onApply() dispatch('close') } - function handleCancel (): void { + function handleCancel(): void { dispatch('close') } diff --git a/plugins/text-editor-resources/src/components/extension/table/decorations/tableDragMarkerDecoration.ts b/plugins/text-editor-resources/src/components/extension/table/decorations/tableDragMarkerDecoration.ts index 5eb134d067..82cef6e443 100644 --- a/plugins/text-editor-resources/src/components/extension/table/decorations/tableDragMarkerDecoration.ts +++ b/plugins/text-editor-resources/src/components/extension/table/decorations/tableDragMarkerDecoration.ts @@ -110,7 +110,7 @@ function createRowDragMarker (): DragMarkerHTMLElement { export type DropMarkerHTMLElement = HTMLElement export function getDropMarker (): DropMarkerHTMLElement | null { - return document.getElementById(dropMarkerId) as DropMarkerHTMLElement + return document.getElementById(dropMarkerId) } export function hideDropMarker (element: DropMarkerHTMLElement): void { @@ -136,11 +136,11 @@ export function updateRowDropMarker (element: DropMarkerHTMLElement, top: number export type DragMarkerHTMLElement = HTMLElement export function getColDragMarker (): DragMarkerHTMLElement | null { - return document.getElementById(colDragMarkerId) as DragMarkerHTMLElement + return document.getElementById(colDragMarkerId) } export function getRowDragMarker (): DragMarkerHTMLElement | null { - return document.getElementById(rowDragMarkerId) as DragMarkerHTMLElement + return document.getElementById(rowDragMarkerId) } export function getDragMarker (element: DragMarkerHTMLElement): void { diff --git a/plugins/text-editor-resources/src/components/extension/todo/ToDoItemNodeView.svelte b/plugins/text-editor-resources/src/components/extension/todo/ToDoItemNodeView.svelte index 446009d012..6d60b4bad5 100644 --- a/plugins/text-editor-resources/src/components/extension/todo/ToDoItemNodeView.svelte +++ b/plugins/text-editor-resources/src/components/extension/todo/ToDoItemNodeView.svelte @@ -24,7 +24,7 @@ let focused = false - function handleSelectionUpdate (): void { + function handleSelectionUpdate(): void { const selection = editor.state.selection const pos = selection.$anchor.pos const start = getPos() @@ -58,7 +58,7 @@ } ) - async function syncTodo (todo: ToDo | undefined): Promise { + async function syncTodo(todo: ToDo | undefined): Promise { if (todo !== undefined && todo.attachedTo === objectId && todo.attachedToClass === objectClass) { const todoChecked = todo.doneOn != null if (todo._id !== todoId || todo.user !== userId || todoChecked !== checked) { @@ -78,7 +78,7 @@ } } - async function markDone (): Promise { + async function markDone(): Promise { if (todo !== undefined) { await client.update(todo, { doneOn: todo.doneOn == null ? Date.now() : null }) } else { @@ -86,7 +86,7 @@ } } - async function assignTodo (user: Ref): Promise { + async function assignTodo(user: Ref): Promise { if (todo !== undefined && todo.user === user) return if (objectId === undefined || objectClass === undefined || objectSpace === undefined) return @@ -132,7 +132,7 @@ }) } - async function unassignTodo (): Promise { + async function unassignTodo(): Promise { updateAttributes({ todoid: null, userid: null @@ -143,7 +143,7 @@ } } - async function assignTodoConfirm (user: Ref): Promise { + async function assignTodoConfirm(user: Ref): Promise { showPopup( MessageBox, { @@ -157,7 +157,7 @@ ) } - async function unassignTodoConfirm (): Promise { + async function unassignTodoConfirm(): Promise { showPopup( MessageBox, { @@ -171,7 +171,7 @@ ) } - async function changeAssignee (user: Ref | undefined): Promise { + async function changeAssignee(user: Ref | undefined): Promise { const shouldConfirm = todo !== undefined && todo?.workslots > 0 if (user !== undefined) { shouldConfirm ? await assignTodoConfirm(user) : await assignTodo(user) @@ -182,7 +182,7 @@ let hovered = false - function handleAssigneeEdit (ev: MouseEvent): void { + function handleAssigneeEdit(ev: MouseEvent): void { ev.preventDefault() ev.stopPropagation() diff --git a/plugins/text-editor-resources/src/components/extension/todo/todo.ts b/plugins/text-editor-resources/src/components/extension/todo/todo.ts index 8e85f0d8d8..896f094090 100644 --- a/plugins/text-editor-resources/src/components/extension/todo/todo.ts +++ b/plugins/text-editor-resources/src/components/extension/todo/todo.ts @@ -29,6 +29,7 @@ import { type DOMOutputSpec, DOMParser, type Attrs, + type ParseRule, type TagParseRule } from '@tiptap/pm/model' import { @@ -78,16 +79,16 @@ export const TodoItemExtension = TaskItem.extend({ return { sinkListItem: (typeOrName) => - ({ state, dispatch }) => { - const type = getNodeType(typeOrName, state.schema) - return sinkListItem(type, 'listItems')(state, dispatch) - }, + ({ state, dispatch }) => { + const type = getNodeType(typeOrName, state.schema) + return sinkListItem(type, 'listItems')(state, dispatch) + }, liftListItem: (typeOrName) => - ({ state, dispatch }) => { - const type = getNodeType(typeOrName, state.schema) - return liftListItem(type, 'listItems')(state, dispatch) - }, + ({ state, dispatch }) => { + const type = getNodeType(typeOrName, state.schema) + return liftListItem(type, 'listItems')(state, dispatch) + }, convertListItems, toggleList } @@ -236,13 +237,14 @@ export function TodoItemPastePlugin (editor: Editor): Plugin editor.view.someProp('clipboardParser') ?? editor.view.someProp('domParser') ?? DOMParser.fromSchema(editor.view.state.schema) + const isTagParseRule = (rule: ParseRule): rule is TagParseRule => rule.tag !== undefined const parseRules = prevClipboardParser.rules.map((rule) => { - if (rule.tag === undefined) { + if (!isTagParseRule(rule)) { return rule } // Strange conversion to be ok for both typescript and eslint // Is ok because rule with 'tag' property is already TagParseRule - const tagRule: TagParseRule = rule as any + const tagRule: TagParseRule = rule if (tagRule.node !== 'todoItem') { return rule } @@ -339,121 +341,98 @@ function tryReplaceTodoItemWithListItem ( const convertListItems: RawCommands['convertListItems'] = (listItemTypeOrName: string | NodeType) => - ({ editor, chain }) => { - const listItemType = getNodeType(listItemTypeOrName, editor.schema) - const { extensions } = editor.extensionManager - const { selection } = editor.state - const { $from, $to } = selection - const range = $from.blockRange($to) - if (range === null) return false - - const parentList = findParentNode((node) => isList(node.type.name, extensions))(selection) - if (parentList === undefined) return false - - let pos = parentList.pos - for (const child of parentList.node.children) { - let shouldConvert = false - if (listItemType.name === 'listItem') { - shouldConvert = + ({ editor, chain }) => { + const listItemType = getNodeType(listItemTypeOrName, editor.schema) + const { extensions } = editor.extensionManager + const { selection } = editor.state + const { $from, $to } = selection + const range = $from.blockRange($to) + if (range === null) return false + + const parentList = findParentNode((node) => isList(node.type.name, extensions))(selection) + if (parentList === undefined) return false + + let pos = parentList.pos + for (const child of parentList.node.children) { + let shouldConvert = false + if (listItemType.name === 'listItem') { + shouldConvert = child.type.name === 'todoItem' && child.attrs.checked !== true && typeof child.attrs.todoid !== 'string' - } else if (listItemType.name === 'todoItem') { - shouldConvert = child.type !== listItemType - } - if (shouldConvert) { - chain() - .command(({ tr }) => { - tr.setNodeMarkup(pos + 1, listItemType) - return true - }) - .run() - } - pos += child.nodeSize + } else if (listItemType.name === 'todoItem') { + shouldConvert = child.type !== listItemType } - return false + if (shouldConvert) { + chain() + .command(({ tr }) => { + tr.setNodeMarkup(pos + 1, listItemType) + return true + }) + .run() + } + pos += child.nodeSize } + return false + } // Fork of tiptap implementation with support for conversion-based transitions // https://github.com/ueberdosis/tiptap/blob/f3258d9ee5fb7979102fe63434f6ea4120507311/packages/core/src/commands/toggleList.ts const toggleList: RawCommands['toggleList'] = (listTypeOrName, itemTypeOrName, keepMarks, attributes = {}) => - ({ editor, tr, state, dispatch, chain, commands, can }) => { - const { extensions, splittableMarks } = editor.extensionManager - const listType = getNodeType(listTypeOrName, state.schema) - const itemType = getNodeType(itemTypeOrName, state.schema) - const { selection, storedMarks } = state - const { $from, $to } = selection - const range = $from.blockRange($to) + ({ editor, tr, state, dispatch, chain, commands, can }) => { + const { extensions, splittableMarks } = editor.extensionManager + const listType = getNodeType(listTypeOrName, state.schema) + const itemType = getNodeType(itemTypeOrName, state.schema) + const { selection, storedMarks } = state + const { $from, $to } = selection + const range = $from.blockRange($to) - const marks = storedMarks ?? (selection.$to.parentOffset !== 0 ? selection.$from.marks() : null) + const marks = storedMarks ?? (selection.$to.parentOffset !== 0 ? selection.$from.marks() : null) - if (range === null) { - return false - } + if (range === null) { + return false + } - const parentList = findParentNode((node) => isList(node.type.name, extensions))(selection) + const parentList = findParentNode((node) => isList(node.type.name, extensions))(selection) - if (range.depth >= 1 && parentList !== undefined && range.depth - parentList.depth <= 1) { + if (range.depth >= 1 && parentList !== undefined && range.depth - parentList.depth <= 1) { // remove list - if (parentList.node.type === listType) { - return commands.liftListItem(itemType) - } - // change list type - if (isList(parentList.node.type.name, extensions) && dispatch !== undefined) { - if (listType.validContent(parentList.node.content)) { - return chain() - .command(() => { - tr.setNodeMarkup(parentList.pos, listType) - return true - }) - .command(() => joinListBackwards(tr, listType)) - .command(() => joinListForwards(tr, listType)) - .convertListItems(itemTypeOrName) - .run() - } - if (state.schema.nodes.bulletList.validContent(parentList.node.content)) { - return chain() - .convertListItems(itemTypeOrName) - .command(() => { - tr.setNodeMarkup(parentList.pos, listType) - return true - }) - .command(() => joinListBackwards(tr, listType)) - .command(() => joinListForwards(tr, listType)) - .run() - } - } + if (parentList.node.type === listType) { + return commands.liftListItem(itemType) } - - if (keepMarks !== true || marks === null || dispatch === undefined) { - return ( - chain() - // try to convert node to default node if needed + // change list type + if (isList(parentList.node.type.name, extensions) && dispatch !== undefined) { + if (listType.validContent(parentList.node.content)) { + return chain() .command(() => { - const canWrapInList = can().wrapInList(listType, attributes) - - if (canWrapInList) { - return true - } - - return commands.clearNodes() + tr.setNodeMarkup(parentList.pos, listType) + return true }) - .wrapInList(listType, attributes) .command(() => joinListBackwards(tr, listType)) .command(() => joinListForwards(tr, listType)) + .convertListItems(itemTypeOrName) .run() - ) + } + if (state.schema.nodes.bulletList.validContent(parentList.node.content)) { + return chain() + .convertListItems(itemTypeOrName) + .command(() => { + tr.setNodeMarkup(parentList.pos, listType) + return true + }) + .command(() => joinListBackwards(tr, listType)) + .command(() => joinListForwards(tr, listType)) + .run() + } } + } + if (keepMarks !== true || marks === null || dispatch === undefined) { return ( chain() - // try to convert node to default node if needed + // try to convert node to default node if needed .command(() => { const canWrapInList = can().wrapInList(listType, attributes) - const filteredMarks = marks.filter((mark) => splittableMarks.includes(mark.type.name)) - - tr.ensureMarks(filteredMarks) - if (canWrapInList) { return true } @@ -467,6 +446,29 @@ const toggleList: RawCommands['toggleList'] = ) } + return ( + chain() + // try to convert node to default node if needed + .command(() => { + const canWrapInList = can().wrapInList(listType, attributes) + + const filteredMarks = marks.filter((mark) => splittableMarks.includes(mark.type.name)) + + tr.ensureMarks(filteredMarks) + + if (canWrapInList) { + return true + } + + return commands.clearNodes() + }) + .wrapInList(listType, attributes) + .command(() => joinListBackwards(tr, listType)) + .command(() => joinListForwards(tr, listType)) + .run() + ) + } + // Fork of tiptap implementation with support for conversion-based transitions // https://github.com/ueberdosis/tiptap/blob/f3258d9ee5fb7979102fe63434f6ea4120507311/packages/core/src/commands/toggleList.ts const joinListBackwards = (tr: Transaction, listType: NodeType): boolean => { diff --git a/plugins/text-editor-resources/src/components/extension/toolbar/EditorToolbar.svelte b/plugins/text-editor-resources/src/components/extension/toolbar/EditorToolbar.svelte index e52bce5cee..0b58589a51 100644 --- a/plugins/text-editor-resources/src/components/extension/toolbar/EditorToolbar.svelte +++ b/plugins/text-editor-resources/src/components/extension/toolbar/EditorToolbar.svelte @@ -33,7 +33,7 @@ let allActions: TextEditorAction[] = [] let actions: TextEditorAction[] = [] - async function updateActions (newActions: TextEditorAction[], ctx: ActionContext): Promise { + async function updateActions(newActions: TextEditorAction[], ctx: ActionContext): Promise { const out: TextEditorAction[] = [] for (const action of newActions) { const tester = action.visibilityTester diff --git a/plugins/text-editor-resources/src/components/extension/toolbar/toolbar.ts b/plugins/text-editor-resources/src/components/extension/toolbar/toolbar.ts index 136ac9adbd..bdddc549fc 100644 --- a/plugins/text-editor-resources/src/components/extension/toolbar/toolbar.ts +++ b/plugins/text-editor-resources/src/components/extension/toolbar/toolbar.ts @@ -545,12 +545,12 @@ function updateCursorFromMouseEvent (view: EditorView, event: MouseEvent): void disableCursor || range === undefined ? null : resolveCursor({ - editorState: view.state, - state, - range, - source: CursorSource.Mouse, - anchor: anchorElement - }) + editorState: view.state, + state, + range, + source: CursorSource.Mouse, + anchor: anchorElement + }) if (newCursor?.requireAnchoring === true && anchorElement === undefined) { newCursor = null diff --git a/plugins/text-editor-resources/src/components/extensions.ts b/plugins/text-editor-resources/src/components/extensions.ts index ec621e3447..dfa6b148a3 100644 --- a/plugins/text-editor-resources/src/components/extensions.ts +++ b/plugins/text-editor-resources/src/components/extensions.ts @@ -86,16 +86,14 @@ export const mInsertTable = [ } ] -const inlineCommandsIds = [ - 'image', - 'table', - 'code-block', - 'separator-line', - 'todo-list', - 'drawing-board', - 'mermaid' -] as const -export type InlineCommandId = (typeof inlineCommandsIds)[number] +export type InlineCommandId = + | 'image' + | 'table' + | 'code-block' + | 'separator-line' + | 'todo-list' + | 'drawing-board' + | 'mermaid' /** * @public diff --git a/plugins/text-editor-resources/src/components/note/ConfigureNotePopup.svelte b/plugins/text-editor-resources/src/components/note/ConfigureNotePopup.svelte index 815c615bd1..def9df5a4b 100644 --- a/plugins/text-editor-resources/src/components/note/ConfigureNotePopup.svelte +++ b/plugins/text-editor-resources/src/components/note/ConfigureNotePopup.svelte @@ -39,11 +39,11 @@ const dispatch = createEventDispatcher() - function handleOk (): void { + function handleOk(): void { handleUpdate(text, kind) } - function handleRemoveClick (): void { + function handleRemoveClick(): void { handleRemove() dispatch('close') } diff --git a/plugins/text-editor-resources/src/components/toc/TableOfContents.svelte b/plugins/text-editor-resources/src/components/toc/TableOfContents.svelte index 87c024b449..f0dabf9d42 100644 --- a/plugins/text-editor-resources/src/components/toc/TableOfContents.svelte +++ b/plugins/text-editor-resources/src/components/toc/TableOfContents.svelte @@ -30,13 +30,13 @@ $: minLevel = items.reduce((p, v) => Math.min(p, v.level), Infinity) $: maxLevel = items.reduce((p, v) => Math.max(p, v.level), 0) - function getLevelWidth (level: number): number { + function getLevelWidth(level: number): number { return (100 * (maxLevel - level + 1)) / (maxLevel - minLevel + 1) } let hovered = false - function handleOpenToc (ev: MouseEvent): void { + function handleOpenToc(ev: MouseEvent): void { ev.preventDefault() ev.stopPropagation() diff --git a/plugins/text-editor-resources/src/components/toc/TableOfContentsContent.svelte b/plugins/text-editor-resources/src/components/toc/TableOfContentsContent.svelte index a11595941a..d86bf009d2 100644 --- a/plugins/text-editor-resources/src/components/toc/TableOfContentsContent.svelte +++ b/plugins/text-editor-resources/src/components/toc/TableOfContentsContent.svelte @@ -26,7 +26,7 @@ $: minLevel = items.reduce((p, v) => Math.min(p, v.level), Infinity) - function getIndentLevel (level: number): number { + function getIndentLevel(level: number): number { return 1 * (level - minLevel) } diff --git a/plugins/text-editor-resources/src/index.ts b/plugins/text-editor-resources/src/index.ts index c6857677f6..ccff77869b 100644 --- a/plugins/text-editor-resources/src/index.ts +++ b/plugins/text-editor-resources/src/index.ts @@ -45,7 +45,7 @@ export { SmartPasteExtension as TransformPastedContentExtension } from './compon export { getReferenceFromUrl, getReferenceLabel, getTargetObjectFromUrl } from './components/extension/reference' export { TodoItemExtension, TodoListExtension } from './components/extension/todo/todo' -export * from '@hcengineering/presentation/src/types' +export type * from '@hcengineering/presentation/src/types' export { default as Collaboration } from './components/Collaboration.svelte' export { default as CollaborationDiffViewer } from './components/CollaborationDiffViewer.svelte' export { default as CollaborativeAttributeBox } from './components/CollaborativeAttributeBox.svelte' diff --git a/plugins/text-editor-resources/src/provider/hocuspocus.ts b/plugins/text-editor-resources/src/provider/hocuspocus.ts index 52036f2db3..e05ee3bf07 100644 --- a/plugins/text-editor-resources/src/provider/hocuspocus.ts +++ b/plugins/text-editor-resources/src/provider/hocuspocus.ts @@ -17,10 +17,10 @@ import { HocuspocusProvider, type HocuspocusProviderConfiguration } from '@hocus import { type Provider } from './types' export type HocuspocusCollabProviderConfiguration = HocuspocusProviderConfiguration & -Required> & -Omit & { - parameters: HocuspocusCollabProviderURLParameters -} + Required> & + Omit & { + parameters: HocuspocusCollabProviderURLParameters + } export interface HocuspocusCollabProviderURLParameters { content: Ref | null diff --git a/plugins/text-editor/.eslintrc.js b/plugins/text-editor/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/text-editor/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/text-editor/eslint.config.mjs b/plugins/text-editor/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/text-editor/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/text-editor/package.json b/plugins/text-editor/package.json index d18d50e0a9..75be6c7b3c 100644 --- a/plugins/text-editor/package.json +++ b/plugins/text-editor/package.json @@ -24,19 +24,19 @@ "devDependencies": { "sass": "^1.80.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/diff": "~5.0.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/presentation": "workspace:^0.7.0", diff --git a/plugins/text-editor/src/index.ts b/plugins/text-editor/src/index.ts index 1cbca920f5..1ee9ebdc06 100644 --- a/plugins/text-editor/src/index.ts +++ b/plugins/text-editor/src/index.ts @@ -17,6 +17,6 @@ import { textEditorId } from './plugin' export { default } from './plugin' -export * from '@hcengineering/presentation/src/types' +export type * from '@hcengineering/presentation/src/types' export * from './types' export { textEditorId } diff --git a/plugins/time-assets/.eslintrc.js b/plugins/time-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/time-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/time-assets/eslint.config.mjs b/plugins/time-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/time-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/time-assets/package.json b/plugins/time-assets/package.json index c91a4faf26..f6cba8406d 100644 --- a/plugins/time-assets/package.json +++ b/plugins/time-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/time-assets/src/lang.ts b/plugins/time-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/time-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/time-resources/.eslintrc.js b/plugins/time-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/time-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/time-resources/eslint.config.mjs b/plugins/time-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/time-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/time-resources/package.json b/plugins/time-resources/package.json index 10f07c1795..ef8218e8e1 100644 --- a/plugins/time-resources/package.json +++ b/plugins/time-resources/package.json @@ -20,22 +20,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/time-resources/src/components/CreateToDo.svelte b/plugins/time-resources/src/components/CreateToDo.svelte index 82ccca3e36..780134a736 100644 --- a/plugins/time-resources/src/components/CreateToDo.svelte +++ b/plugins/time-resources/src/components/CreateToDo.svelte @@ -16,7 +16,7 @@ const client = getClient() const me = getCurrentEmployee() - async function save (): Promise { + async function save(): Promise { let [name, description] = value.split('//') name = name.trim() if (name.length === 0) return @@ -54,11 +54,11 @@ clear() } - function clear (): void { + function clear(): void { value = '' } - function openPopup (): void { + function openPopup(): void { showPopup(CreateToDoPopup, { value }, 'top') } diff --git a/plugins/time-resources/src/components/CreateToDoPopup.svelte b/plugins/time-resources/src/components/CreateToDoPopup.svelte index 76f664893b..9cb888ee34 100644 --- a/plugins/time-resources/src/components/CreateToDoPopup.svelte +++ b/plugins/time-resources/src/components/CreateToDoPopup.svelte @@ -52,13 +52,13 @@ const dispatch = createEventDispatcher() const client = getClient() - export function canClose (): boolean { + export function canClose(): boolean { return true } let loading = false - async function saveToDo (): Promise { + async function saveToDo(): Promise { loading = true const ops = client.apply(undefined, 'create-todo') const latestTodo = await ops.findOne( @@ -128,7 +128,7 @@ let slots: WorkSlot[] = [] let reminders: number[] = [] - function removeSlot (e: CustomEvent<{ _id: Ref }>): void { + function removeSlot(e: CustomEvent<{ _id: Ref }>): void { const index = slots.findIndex((p) => p._id === e.detail._id) if (index !== -1) { slots.splice(index, 1) @@ -136,7 +136,7 @@ } } - function createSlot (): void { + function createSlot(): void { const defaultDuration = 30 * 60 * 1000 const now = Date.now() const date = Math.ceil(now / (30 * 60 * 1000)) * (30 * 60 * 1000) @@ -167,7 +167,7 @@ slots = slots } - function changeSlot (e: CustomEvent<{ startDate: number, dueDate: number, slot: Ref }>): void { + function changeSlot(e: CustomEvent<{ startDate: number, dueDate: number, slot: Ref }>): void { const { startDate, dueDate, slot } = e.detail const workslot = slots.find((s) => s._id === slot) if (workslot !== undefined) { @@ -177,7 +177,7 @@ } } - function changeDueSlot (e: CustomEvent<{ dueDate: number, slot: Ref }>): void { + function changeDueSlot(e: CustomEvent<{ dueDate: number, slot: Ref }>): void { const { dueDate, slot } = e.detail const workslot = slots.find((s) => s._id === slot) if (workslot !== undefined) { diff --git a/plugins/time-resources/src/components/DueDateEditor.svelte b/plugins/time-resources/src/components/DueDateEditor.svelte index 0dbe5e3bb0..0390f5f3bc 100644 --- a/plugins/time-resources/src/components/DueDateEditor.svelte +++ b/plugins/time-resources/src/components/DueDateEditor.svelte @@ -26,7 +26,7 @@ $: buttonTitle = value ? new Date(value).toLocaleDateString() : undefined $: buttonLabel = buttonTitle === undefined ? ui.string.DueDate : undefined - function handleClick (e: MouseEvent) { + function handleClick(e: MouseEvent) { if (!opened) { opened = true showPopup( diff --git a/plugins/time-resources/src/components/EditToDo.svelte b/plugins/time-resources/src/components/EditToDo.svelte index 2ce063e18c..702dfa0b1c 100644 --- a/plugins/time-resources/src/components/EditToDo.svelte +++ b/plugins/time-resources/src/components/EditToDo.svelte @@ -53,44 +53,44 @@ } }) - export function canClose (): boolean { + export function canClose(): boolean { return true } - async function updateName () { + async function updateName() { if (object.title !== title) { await client.update(object, { title }) } } - async function updateDescription () { + async function updateDescription() { if (object.description !== description) { await client.update(object, { description }) } } - async function markDone () { + async function markDone() { object.doneOn = object.doneOn == null ? Date.now() : null await client.update(object, { doneOn: object.doneOn }) } - async function dueDateChange (value: Date | null) { + async function dueDateChange(value: Date | null) { const dueDate = value != null ? value.getTime() : null await client.update(object, { dueDate }) object.dueDate = dueDate } - async function priorityChange (priority: ToDoPriority) { + async function priorityChange(priority: ToDoPriority) { await client.update(object, { priority }) object.priority = priority } - async function visibilityChange (visibility: Visibility) { + async function visibilityChange(visibility: Visibility) { await client.update(object, { visibility }) object.visibility = visibility } - async function spaceChange (space: Space | null) { + async function spaceChange(space: Space | null) { const oldSpace = object.attachedSpace ?? undefined const newSpace = space?._id ?? undefined if (newSpace !== oldSpace) { diff --git a/plugins/time-resources/src/components/EditWorkSlot.svelte b/plugins/time-resources/src/components/EditWorkSlot.svelte index 620b34aed7..7a8ee2d32d 100644 --- a/plugins/time-resources/src/components/EditWorkSlot.svelte +++ b/plugins/time-resources/src/components/EditWorkSlot.svelte @@ -62,11 +62,11 @@ const dispatch = createEventDispatcher() const client = getClient() - export function canClose (): boolean { + export function canClose(): boolean { return true } - async function saveEvent () { + async function saveEvent() { if (readOnly) { return } diff --git a/plugins/time-resources/src/components/Header.svelte b/plugins/time-resources/src/components/Header.svelte index 743df59ef9..d8a718de26 100644 --- a/plugins/time-resources/src/components/Header.svelte +++ b/plugins/time-resources/src/components/Header.svelte @@ -17,7 +17,7 @@ export let currentDate: Date = new Date() - function inc (val: number): void { + function inc(val: number): void { if (val === 0) { currentDate = new Date() return @@ -26,7 +26,7 @@ currentDate = currentDate } - function getTitle (day: Date, now: Timestamp): IntlString { + function getTitle(day: Date, now: Timestamp): IntlString { // const today = new Date(now) // const tomorrow = new Date(new Date(now).setDate(new Date(now).getDate() + 1)) // const yesterday = new Date(new Date(now).setDate(new Date(now).getDate() - 1)) diff --git a/plugins/time-resources/src/components/PlanView.svelte b/plugins/time-resources/src/components/PlanView.svelte index a05cebee74..0de8cff9c8 100644 --- a/plugins/time-resources/src/components/PlanView.svelte +++ b/plugins/time-resources/src/components/PlanView.svelte @@ -44,7 +44,7 @@ const client = getClient() - async function drop (e: CustomEvent) { + async function drop(e: CustomEvent) { if (dragItem === null) return const doc = dragItem const date = e.detail.date.getTime() diff --git a/plugins/time-resources/src/components/PlanningCalendar.svelte b/plugins/time-resources/src/components/PlanningCalendar.svelte index e64cd4f690..716e995079 100644 --- a/plugins/time-resources/src/components/PlanningCalendar.svelte +++ b/plugins/time-resources/src/components/PlanningCalendar.svelte @@ -32,11 +32,11 @@ const q = createQuery() - function getFrom (date: Date): Timestamp { + function getFrom(date: Date): Timestamp { return new Date(date).setHours(0, 0, 0, 0) } - function getTo (date: Date, days: number = 3): Timestamp { + function getTo(date: Date, days: number = 3): Timestamp { return new Date(date).setDate(date.getDate() + days) } @@ -63,7 +63,7 @@ $: from = getFrom(currentDate) $: to = getTo(currentDate, displayedDaysCount) - function update (calendars: Calendar[]): void { + function update(calendars: Calendar[]): void { q.query( calendar.class.Event, { calendar: { $in: [personalCalendar, ...calendars.map((p) => p._id)] } }, @@ -78,7 +78,7 @@ $: all = getAllEvents(raw, from, to) $: objects = hidePrivateEvents(all, $calendarByIdStore) - function inc (val: number): void { + function inc(val: number): void { if (val === 0) { currentDate = new Date() dayCalendar.scrollToTime(currentDate) @@ -88,7 +88,7 @@ currentDate = currentDate } - function getTitle (day: Date, now: Timestamp): IntlString { + function getTitle(day: Date, now: Timestamp): IntlString { const today = new Date(now) const tomorrow = new Date(new Date(now).setDate(new Date(now).getDate() + 1)) const yesterday = new Date(new Date(now).setDate(new Date(now).getDate() - 1)) @@ -106,7 +106,7 @@ } const dragItemId = 'drag_item' as Ref - function dragEnter (e: CustomEvent) { + function dragEnter(e: CustomEvent) { if (dragItem != null) { const current = raw.find((p) => p._id === dragItemId) if (current !== undefined) { @@ -144,20 +144,20 @@ objects = hidePrivateEvents(all, $calendarByIdStore) } } - function dragLeave (event: DragEvent) { + function dragLeave(event: DragEvent) { const rect = dayCalendar.getCalendarRect() if (!rect) return if (event.x < rect.left || event.x > rect.right || event.y < rect.top || event.y > rect.bottom) { raw = raw.filter((r) => r._id !== dragItemId) } } - function dragOut () { + function dragOut() { if (dragItemId != null) { raw = raw.filter((r) => r._id !== dragItemId) } } - function clear (dragItem: ToDo | null) { + function clear(dragItem: ToDo | null) { if (dragItem === null) { raw = raw.filter((p) => p._id !== dragItemId) all = getAllEvents(raw, from, to) @@ -166,7 +166,7 @@ } $: clear(dragItem) - function showCreateDialog (date: Date, withTime: boolean) { + function showCreateDialog(date: Date, withTime: boolean) { if (createComponent === undefined) { return } diff --git a/plugins/time-resources/src/components/PriorityEditor.svelte b/plugins/time-resources/src/components/PriorityEditor.svelte index fc617904f0..0eb7c3a206 100644 --- a/plugins/time-resources/src/components/PriorityEditor.svelte +++ b/plugins/time-resources/src/components/PriorityEditor.svelte @@ -61,7 +61,7 @@ onChange(newPriority) } - function handleClick (event: MouseEvent) { + function handleClick(event: MouseEvent) { event.stopPropagation() showPopup( diff --git a/plugins/time-resources/src/components/TaskSelector.svelte b/plugins/time-resources/src/components/TaskSelector.svelte index 48b4e0b1a8..761e1cae7c 100644 --- a/plugins/time-resources/src/components/TaskSelector.svelte +++ b/plugins/time-resources/src/components/TaskSelector.svelte @@ -14,7 +14,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function click (e: MouseEvent) { + function click(e: MouseEvent) { if (value && value.attachedTo !== time.ids.NotAttached) { const panelComponent = hierarchy.classHierarchyMixin, ObjectPanel>( value.attachedToClass, diff --git a/plugins/time-resources/src/components/ToDoDraggable.svelte b/plugins/time-resources/src/components/ToDoDraggable.svelte index 2305f7e23c..802b5e5951 100644 --- a/plugins/time-resources/src/components/ToDoDraggable.svelte +++ b/plugins/time-resources/src/components/ToDoDraggable.svelte @@ -56,7 +56,7 @@ } } - function handleDragStart (event: DragEvent): void { + function handleDragStart(event: DragEvent): void { if (event.dataTransfer) { event.dataTransfer.effectAllowed = 'move' } @@ -70,7 +70,7 @@ })) } - function handleDragEnd (): void { + function handleDragEnd(): void { isDragging = false dragging.set({ item: null, @@ -83,7 +83,7 @@ }) } - function handleDragOver (): void { + function handleDragOver(): void { if (!isDraggable) return dragging.update((state) => ({ ...state, @@ -93,7 +93,7 @@ })) } - function handleDrop (event: DragEvent): void { + function handleDrop(event: DragEvent): void { if (!isDraggable) return dispatch('drop', { event, index }) } diff --git a/plugins/time-resources/src/components/ToDoElement.svelte b/plugins/time-resources/src/components/ToDoElement.svelte index ea10c0b178..90b64941b1 100644 --- a/plugins/time-resources/src/components/ToDoElement.svelte +++ b/plugins/time-resources/src/components/ToDoElement.svelte @@ -32,7 +32,7 @@ const client = getClient() let updating: Promise | undefined = undefined - async function markDone (): Promise { + async function markDone(): Promise { await updating updating = client.update(todo, { doneOn: todo.doneOn == null ? Date.now() : null }) await updating @@ -53,14 +53,14 @@ ) let hovered = false - async function onMenuClick (ev: MouseEvent): Promise { + async function onMenuClick(ev: MouseEvent): Promise { hovered = true showMenu(ev, { object: todo }, () => { hovered = false }) } - function open (e: MouseEvent): void { + function open(e: MouseEvent): void { showPanel(time.component.EditToDo, todo._id, todo._class, 'content') } diff --git a/plugins/time-resources/src/components/ToDoGroup.svelte b/plugins/time-resources/src/components/ToDoGroup.svelte index 07d0ce59ad..37ddf6cba1 100644 --- a/plugins/time-resources/src/components/ToDoGroup.svelte +++ b/plugins/time-resources/src/components/ToDoGroup.svelte @@ -35,7 +35,7 @@ export let showDuration: boolean export let projects: IdMap - function getAllWorkslots (todos: WithLookup[]): WorkSlot[] { + function getAllWorkslots(todos: WithLookup[]): WorkSlot[] { const workslots: WorkSlot[] = [] for (const todo of todos) { for (const workslot of (todo.$lookup?.workslots ?? []) as WorkSlot[]) { @@ -76,7 +76,7 @@ $: draggingItem = $dragging.item $: draggingItemIndex = $dragging.itemIndex - async function handleDrop (event: CustomEvent<{ event: DragEvent, index: number }>): Promise { + async function handleDrop(event: CustomEvent<{ event: DragEvent, index: number }>): Promise { if (draggingItem === null || draggingItemIndex === null) return const droppingIndex = event.detail.index diff --git a/plugins/time-resources/src/components/ToDoPresenter.svelte b/plugins/time-resources/src/components/ToDoPresenter.svelte index 092be7615f..60a235d62c 100644 --- a/plugins/time-resources/src/components/ToDoPresenter.svelte +++ b/plugins/time-resources/src/components/ToDoPresenter.svelte @@ -27,7 +27,7 @@ export let withouthWorkItem: boolean = false export let showCheck = false - function isVisible (value: ToDo): boolean { + function isVisible(value: ToDo): boolean { if (value.createdBy !== undefined && getCurrentAccount().socialIds.includes(value.createdBy)) return true if (value.visibility === 'public') { return true @@ -45,7 +45,7 @@ let updating: Promise | undefined = undefined - async function markDone (): Promise { + async function markDone(): Promise { await updating updating = client.update(value, { doneOn: value.doneOn == null ? Date.now() : null }) await updating diff --git a/plugins/time-resources/src/components/ToDoProjectGroup.svelte b/plugins/time-resources/src/components/ToDoProjectGroup.svelte index c8bf709527..444f785dbb 100644 --- a/plugins/time-resources/src/components/ToDoProjectGroup.svelte +++ b/plugins/time-resources/src/components/ToDoProjectGroup.svelte @@ -60,7 +60,7 @@ $: draggingItem = $dragging.item $: draggingItemIndex = $dragging.itemIndex - async function handleDrop (event: CustomEvent<{ event: DragEvent, index: number }>): Promise { + async function handleDrop(event: CustomEvent<{ event: DragEvent, index: number }>): Promise { if (draggingItem === null || draggingItemIndex === null) return const droppingIndex = event.detail.index diff --git a/plugins/time-resources/src/components/ToDos.svelte b/plugins/time-resources/src/components/ToDos.svelte index c4ef3bca43..925f3a851b 100644 --- a/plugins/time-resources/src/components/ToDos.svelte +++ b/plugins/time-resources/src/components/ToDos.svelte @@ -64,11 +64,11 @@ $: updateTags(mode, tag) - function togglePlannerNav (): void { + function togglePlannerNav(): void { $deviceInfo.navigator.visible = !$deviceInfo.navigator.visible } - function updateTags (mode: ToDosMode, tag: Ref | undefined): void { + function updateTags(mode: ToDosMode, tag: Ref | undefined): void { if (mode !== 'tag' || tag === undefined) { tagsQuery.unsubscribe() ids = [] @@ -85,7 +85,7 @@ ) } - function update (mode: ToDosMode, currentDate: Date, ids: Ref[]): void { + function update(mode: ToDosMode, currentDate: Date, ids: Ref[]): void { let activeQ: DocumentQuery | undefined = undefined let doneQ: DocumentQuery | undefined = undefined let inboxQ: DocumentQuery | undefined = undefined @@ -203,7 +203,7 @@ $: groups = group(inbox, done, active, todoValue) - function filterActive (mode: ToDosMode, raw: WithLookup[], currentDate: Date): WithLookup[] { + function filterActive(mode: ToDosMode, raw: WithLookup[], currentDate: Date): WithLookup[] { if (mode === 'planned') { const today = areDatesEqual(new Date(), currentDate) const res: WithLookup[] = [] @@ -228,11 +228,11 @@ } } - function getWorkslots (todo: WithLookup): WorkSlot[] { + function getWorkslots(todo: WithLookup): WorkSlot[] { return (todo.$lookup?.workslots ?? []) as WorkSlot[] } - function group ( + function group( unplanned: WithLookup[], done: WithLookup[], active: WithLookup[], diff --git a/plugins/time-resources/src/components/ToDosNavigator.svelte b/plugins/time-resources/src/components/ToDosNavigator.svelte index 782ba3d224..218631eb09 100644 --- a/plugins/time-resources/src/components/ToDosNavigator.svelte +++ b/plugins/time-resources/src/components/ToDosNavigator.svelte @@ -114,7 +114,7 @@ $: actions = getHeaderMenuActions() - function getHeaderMenuActions (): Action[] { + function getHeaderMenuActions(): Action[] { const actions: Action[] = [] if (getMetadata(calendar.metadata.CalDavServerURL)) { actions.push({ @@ -130,7 +130,7 @@ return actions } - function menuButtonClicked (ev: MouseEvent): void { + function menuButtonClicked(ev: MouseEvent): void { pressed = true showPopup(Menu, { actions }, ev.target as HTMLElement, () => { pressed = false diff --git a/plugins/time-resources/src/components/TodoWorkslots.svelte b/plugins/time-resources/src/components/TodoWorkslots.svelte index e578347498..4b6583a84b 100644 --- a/plugins/time-resources/src/components/TodoWorkslots.svelte +++ b/plugins/time-resources/src/components/TodoWorkslots.svelte @@ -65,7 +65,7 @@ } } - async function change (e: CustomEvent<{ startDate: number, dueDate: number, slot: Ref }>): Promise { + async function change(e: CustomEvent<{ startDate: number, dueDate: number, slot: Ref }>): Promise { const { startDate, dueDate, slot } = e.detail const workslot = slots.find((s) => s._id === slot) if (workslot !== undefined) { @@ -73,7 +73,7 @@ } } - async function dueChange (e: CustomEvent<{ dueDate: number, slot: Ref }>): Promise { + async function dueChange(e: CustomEvent<{ dueDate: number, slot: Ref }>): Promise { const { dueDate, slot } = e.detail const workslot = slots.find((s) => s._id === slot) if (workslot !== undefined) { @@ -81,7 +81,7 @@ } } - async function create (): Promise { + async function create(): Promise { const defaultDuration = 30 * 60 * 1000 const now = Date.now() const date = Math.ceil(now / (30 * 60 * 1000)) * (30 * 60 * 1000) @@ -106,7 +106,7 @@ Analytics.handleEvent(TimeEvents.ToDoScheduled, { id: todo._id }) } - async function syncRemindersForSlots (): Promise { + async function syncRemindersForSlots(): Promise { await Promise.all( slots.map(async (slot) => { await client.update(slot, { reminders }) @@ -114,7 +114,7 @@ ) } - async function remove (e: CustomEvent<{ _id: Ref }>): Promise { + async function remove(e: CustomEvent<{ _id: Ref }>): Promise { const object = slots.find((p) => p._id === e.detail._id) if (object !== undefined) { showPopup( diff --git a/plugins/time-resources/src/components/WorkItemPresenter.svelte b/plugins/time-resources/src/components/WorkItemPresenter.svelte index 77606c42c5..ea59e9ed27 100644 --- a/plugins/time-resources/src/components/WorkItemPresenter.svelte +++ b/plugins/time-resources/src/components/WorkItemPresenter.svelte @@ -39,7 +39,7 @@ doc = res[0] }) - async function click (event: MouseEvent): Promise { + async function click(event: MouseEvent): Promise { event.stopPropagation() if (!doc) return const panelComponent = hierarchy.classHierarchyMixin, ObjectPanel>(doc._class, view.mixin.ObjectPanel) diff --git a/plugins/time-resources/src/components/WorkSlotElement.svelte b/plugins/time-resources/src/components/WorkSlotElement.svelte index 975adcde1a..fda2239587 100644 --- a/plugins/time-resources/src/components/WorkSlotElement.svelte +++ b/plugins/time-resources/src/components/WorkSlotElement.svelte @@ -28,8 +28,8 @@ const query = createQuery() $: !hideDetails ? query.query(event.attachedToClass, { _id: event.attachedTo }, (res) => { - todo = res[0] - }) + todo = res[0] + }) : query.unsubscribe() diff --git a/plugins/time-resources/src/components/Workslots.svelte b/plugins/time-resources/src/components/Workslots.svelte index 01e67ff92a..3074be8c74 100644 --- a/plugins/time-resources/src/components/Workslots.svelte +++ b/plugins/time-resources/src/components/Workslots.svelte @@ -41,19 +41,19 @@ duration = res }) - function handleKeyDown (event: KeyboardEvent): void { + function handleKeyDown(event: KeyboardEvent): void { if (!shortcuts) return if (event.shiftKey && event.key === 'Enter') { dispatch('create') } } - async function change (e: CustomEvent<{ startDate: number, dueDate: number }>, slot: WorkSlot): Promise { + async function change(e: CustomEvent<{ startDate: number, dueDate: number }>, slot: WorkSlot): Promise { const { startDate, dueDate } = e.detail dispatch('change', { startDate, dueDate, slot: slot._id }) } - async function dueChange (e: CustomEvent<{ dueDate: number }>, slot: WorkSlot): Promise { + async function dueChange(e: CustomEvent<{ dueDate: number }>, slot: WorkSlot): Promise { const { dueDate } = e.detail dispatch('dueChange', { dueDate, slot: slot._id }) } diff --git a/plugins/time-resources/src/components/team/Team.svelte b/plugins/time-resources/src/components/team/Team.svelte index 92362b2b58..55cef97c9d 100644 --- a/plugins/time-resources/src/components/team/Team.svelte +++ b/plugins/time-resources/src/components/team/Team.svelte @@ -49,7 +49,7 @@ let items: BreadcrumbItem[] let replacedPanel: HTMLElement - async function updateSpace (space?: Ref): Promise { + async function updateSpace(space?: Ref): Promise { if (space === undefined) { items = [teamBreadcrumb] return @@ -72,7 +72,7 @@ } $: updateSpace(space) - function changeMode (_mode: string): void { + function changeMode(_mode: string): void { mode = _mode Analytics.handleEvent(TimeEvents.TeamOpenTab, { tab: _mode }) diff --git a/plugins/time-resources/src/components/team/agenda/DayPlan.svelte b/plugins/time-resources/src/components/team/agenda/DayPlan.svelte index 0eb5e5faec..f9b56fa163 100644 --- a/plugins/time-resources/src/components/team/agenda/DayPlan.svelte +++ b/plugins/time-resources/src/components/team/agenda/DayPlan.svelte @@ -13,7 +13,7 @@ export let showAssignee: boolean = false export let todos: IdMap - function getTitle (day: Date, now: Timestamp): IntlString { + function getTitle(day: Date, now: Timestamp): IntlString { const today = new Date(now) const tomorrow = new Date(new Date(now).setDate(new Date(now).getDate() + 1)) const yesterday = new Date(new Date(now).setDate(new Date(now).getDate() - 1)) diff --git a/plugins/time-resources/src/components/team/calendar/EventElement.svelte b/plugins/time-resources/src/components/team/calendar/EventElement.svelte index 5a16e32900..5276d509cf 100644 --- a/plugins/time-resources/src/components/team/calendar/EventElement.svelte +++ b/plugins/time-resources/src/components/team/calendar/EventElement.svelte @@ -29,7 +29,7 @@ $: left = (hour / 60) * new Date(event.date).getMinutes() $: empty = false - function click (): void { + function click(): void { if (visible) { const editor = hierarchy.classHierarchyMixin(event._class, view.mixin.ObjectEditor) if (editor?.editor !== undefined) { @@ -49,7 +49,7 @@ $: visible = isVisible(event, $calendarByIdStore) - function onContext (e: MouseEvent): void { + function onContext(e: MouseEvent): void { showMenu(e, { object: event }) } diff --git a/plugins/time-resources/src/components/team/calendar/PersonCalendar.svelte b/plugins/time-resources/src/components/team/calendar/PersonCalendar.svelte index e251214cbc..61298a1ccb 100644 --- a/plugins/time-resources/src/components/team/calendar/PersonCalendar.svelte +++ b/plugins/time-resources/src/components/team/calendar/PersonCalendar.svelte @@ -41,20 +41,20 @@ const todayDate = new Date() - function getColumnWidth (gridWidth: number, currentDate: Date, maxDays: number): number { + function getColumnWidth(gridWidth: number, currentDate: Date, maxDays: number): number { const width = gridWidth / Math.min(daysInMonth(currentDate), maxDays) return Math.max(width, minColWidthRem) } - export function getCellStyle (): string { + export function getCellStyle(): string { return `width: ${columnWidthRem}rem;` } - export function getRowStyle (): string { + export function getRowStyle(): string { return `height: ${rowHeightRem}rem;` } - export function getHeaderStyle (): string { + export function getHeaderStyle(): string { return `height: ${headerHeightRem}rem;` } diff --git a/plugins/time-resources/src/components/team/calendar/TeamCalendar.svelte b/plugins/time-resources/src/components/team/calendar/TeamCalendar.svelte index cc8e70507a..0d4627335f 100644 --- a/plugins/time-resources/src/components/team/calendar/TeamCalendar.svelte +++ b/plugins/time-resources/src/components/team/calendar/TeamCalendar.svelte @@ -94,7 +94,7 @@ const client = getClient() - function group ( + function group( txes: Tx[], from: Timestamp, to: Timestamp diff --git a/plugins/time-resources/src/components/team/calendar/TeamCalendarDay.svelte b/plugins/time-resources/src/components/team/calendar/TeamCalendarDay.svelte index 6f2d4dcc51..289d6206eb 100644 --- a/plugins/time-resources/src/components/team/calendar/TeamCalendarDay.svelte +++ b/plugins/time-resources/src/components/team/calendar/TeamCalendarDay.svelte @@ -43,7 +43,7 @@ .map((it) => $employeeRefByAccountUuidStore.get(it)) .filter((it) => it !== undefined) - function calcHourWidth (events: Event[], totalWidth: number): number[] { + function calcHourWidth(events: Event[], totalWidth: number): number[] { const hours = new Map() for (const e of events) { const h1 = new Date(e.date).getHours() @@ -67,7 +67,7 @@ '1hour': 1, '30mins': 2 } - function calcTop (event: Event, prevEvent?: Event): number { + function calcTop(event: Event, prevEvent?: Event): number { if (prevEvent === undefined) { return 0 } diff --git a/plugins/time-resources/src/components/team/calendar/TxPanel.svelte b/plugins/time-resources/src/components/team/calendar/TxPanel.svelte index 8aa19d0f84..6680cf5252 100644 --- a/plugins/time-resources/src/components/team/calendar/TxPanel.svelte +++ b/plugins/time-resources/src/components/team/calendar/TxPanel.svelte @@ -32,7 +32,7 @@ } let objects: ObjData[] = [] - async function group (txes: TxCUD[]): Promise { + async function group(txes: TxCUD[]): Promise { const h = client.getHierarchy() const objs = new Map, ObjData>() diff --git a/plugins/time/.eslintrc.js b/plugins/time/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/time/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/time/eslint.config.mjs b/plugins/time/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/time/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/time/package.json b/plugins/time/package.json index 9f072cb810..0bd9227018 100644 --- a/plugins/time/package.json +++ b/plugins/time/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/tracker-assets/.eslintrc.js b/plugins/tracker-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/tracker-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/tracker-assets/eslint.config.mjs b/plugins/tracker-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/tracker-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/tracker-assets/package.json b/plugins/tracker-assets/package.json index 18696a03b3..d1fbd51e12 100644 --- a/plugins/tracker-assets/package.json +++ b/plugins/tracker-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/tracker-assets/src/lang.ts b/plugins/tracker-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/tracker-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/tracker-resources/.eslintrc.js b/plugins/tracker-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/tracker-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/tracker-resources/eslint.config.mjs b/plugins/tracker-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/tracker-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/tracker-resources/package.json b/plugins/tracker-resources/package.json index b1625e4290..aaa6b3614f 100644 --- a/plugins/tracker-resources/package.json +++ b/plugins/tracker-resources/package.json @@ -22,22 +22,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/plugins/tracker-resources/src/component.ts b/plugins/tracker-resources/src/component.ts index 5bea1a4645..027cfec7f7 100644 --- a/plugins/tracker-resources/src/component.ts +++ b/plugins/tracker-resources/src/component.ts @@ -140,7 +140,7 @@ export function groupComponentValuesWithEmpty ( resQuery._id = st } componentsList = matchQuery(componentsList, resQuery, _class, hierarchy) as unknown as Array< - WithLookup + WithLookup > } return componentsList.map((it) => it._id) diff --git a/plugins/tracker-resources/src/components/CreateIssue.svelte b/plugins/tracker-resources/src/components/CreateIssue.svelte index e724a2a38c..57933573ea 100644 --- a/plugins/tracker-resources/src/components/CreateIssue.svelte +++ b/plugins/tracker-resources/src/components/CreateIssue.svelte @@ -144,7 +144,7 @@ let template: IssueTemplate | undefined = undefined const templateQuery = createQuery() - function objectChange (object: IssueDraft, empty: any): void { + function objectChange(object: IssueDraft, empty: any): void { if (shouldSaveDraft) { draftController.save(object, empty) } @@ -165,7 +165,7 @@ parentIssue = undefined } - function getDefaultObjectFromDraft (): IssueDraft | undefined { + function getDefaultObjectFromDraft(): IssueDraft | undefined { if (draft == null) { return } @@ -182,7 +182,7 @@ } } - function getDefaultObject (id: Ref | undefined = undefined, ignoreOriginal = false): IssueDraft { + function getDefaultObject(id: Ref | undefined = undefined, ignoreOriginal = false): IssueDraft { const base: IssueDraft = { _id: id ?? generateId(), title: '', @@ -262,7 +262,7 @@ object.space = _space } - function resetObject (): void { + function resetObject(): void { templateId = undefined template = undefined object = getDefaultObject(undefined, true) @@ -278,7 +278,7 @@ templateQuery.unsubscribe() } - function tagAsRef (tag: TagElement): TagReference { + function tagAsRef(tag: TagElement): TagReference { return { _class: tags.class.TagReference, _id: generateId(), @@ -294,7 +294,7 @@ } } - async function updateTemplate (template: IssueTemplate): Promise { + async function updateTemplate(template: IssueTemplate): Promise { if (object.template?.template === template._id) { return } @@ -323,11 +323,11 @@ labels: p.labels !== undefined ? p.labels - .map((p) => { - const val = tagElements.get(p) - return val !== undefined ? tagAsRef(val) : undefined - }) - .filter((p) => p !== undefined) + .map((p) => { + const val = tagElements.get(p) + return val !== undefined ? tagAsRef(val) : undefined + }) + .filter((p) => p !== undefined) : [], status: currentProject?.defaultIssueStatus } @@ -345,11 +345,11 @@ object.labels = labels !== undefined ? labels - .map((p) => { - const val = tagElements.get(p) - return val !== undefined ? tagAsRef(val) : undefined - }) - .filter((p) => p !== undefined) + .map((p) => { + const val = tagElements.get(p) + return val !== undefined ? tagAsRef(val) : undefined + }) + .filter((p) => p !== undefined) : [] if (object.kind !== undefined) { @@ -381,19 +381,19 @@ const docCreateManager = DocCreateExtensionManager.create(tracker.class.Issue) - function updateIssueStatusId (object: IssueDraft, currentProject: Project | undefined): void { + function updateIssueStatusId(object: IssueDraft, currentProject: Project | undefined): void { if (currentProject?.defaultIssueStatus !== undefined && object.status === undefined) { object.status = currentProject.defaultIssueStatus } } - function resetDefaultAssigneeId (): void { + function resetDefaultAssigneeId(): void { if (!isAssigneeTouched && !(object.assignee == null) && object.assignee === currentProject?.defaultAssignee) { object = { ...object, assignee: assignee ?? null } } } - function updateAssigneeId (object: IssueDraft, currentProject: Project | undefined): void { + function updateAssigneeId(object: IssueDraft, currentProject: Project | undefined): void { if (!isAssigneeTouched && object.assignee == null && currentProject !== undefined) { if (currentProject.defaultAssignee !== undefined) { object.assignee = currentProject.defaultAssignee @@ -402,23 +402,23 @@ } } } - function clearParentIssue (): void { + function clearParentIssue(): void { object.parentIssue = undefined parentQuery.unsubscribe() parentIssue = undefined } - function getTitle (value: string): string { + function getTitle(value: string): string { return value.trim() } let subIssuesComponent: SubIssues - export function canClose (): boolean { + export function canClose(): boolean { return true } - export function onOutsideClick (): void { + export function onOutsideClick(): void { if (shouldSaveDraft) { draftController.save(object, empty) } @@ -430,7 +430,7 @@ preferences = res }) - async function updateCurrentProjectPref (currentProject: Ref): Promise { + async function updateCurrentProjectPref(currentProject: Ref): Promise { if (me?.role === AccountRole.ReadOnlyGuest || me?.role === AccountRole.Guest) return const spacePreferences = await client.findOne(tracker.class.ProjectTargetPreference, { attachedTo: currentProject }) if (spacePreferences === undefined) { @@ -452,7 +452,7 @@ void updateCurrentProjectPref(_space) } - async function createIssue (): Promise { + async function createIssue(): Promise { const _id: Ref = generateId() if ( !canSave || @@ -612,7 +612,7 @@ } } - async function setParentIssue (): Promise { + async function setParentIssue(): Promise { showPopup( SetParentIssueActionPopup, { value: { ...object, space: _space, attachedTo: parentIssue?._id } }, @@ -642,10 +642,10 @@ object.milestone = milestoneId } - function addTagRef (tag: TagElement): void { + function addTagRef(tag: TagElement): void { object.labels = [...object.labels, tagAsRef(tag)] } - function handleTemplateChange (evt: CustomEvent>): void { + function handleTemplateChange(evt: CustomEvent>): void { if (templateId == null) { templateId = evt.detail return @@ -672,7 +672,7 @@ ) } - async function showConfirmationDialog (): Promise { + async function showConfirmationDialog(): Promise { draftController.save(object, empty) const isFormEmpty = draft === undefined @@ -703,14 +703,14 @@ let attachments: Map, Attachment> = new Map, Attachment>() - function isMemberOfProject (project: Project | undefined): boolean { + function isMemberOfProject(project: Project | undefined): boolean { if (project == null) return false const members = project.members if (!Array.isArray(members)) return true return members.includes(me.uuid) } - async function findDefaultSpace (): Promise { + async function findDefaultSpace(): Promise { let targetRef: Ref | undefined if (relatedTo !== undefined) { const targets = await client.findAll(tracker.class.RelatedIssueTarget, {}) diff --git a/plugins/tracker-resources/src/components/DependencyEditor.svelte b/plugins/tracker-resources/src/components/DependencyEditor.svelte index e8bf404e8e..e295664e74 100644 --- a/plugins/tracker-resources/src/components/DependencyEditor.svelte +++ b/plugins/tracker-resources/src/components/DependencyEditor.svelte @@ -62,30 +62,30 @@ $: sliderValue = clampLagSlider(lagValue, SLIDER_MIN, SLIDER_MAX) $: outOfSliderRange = lagValue < SLIDER_MIN || lagValue > SLIDER_MAX - function clampLag (n: number): number { + function clampLag(n: number): number { if (Number.isNaN(n)) return 0 if (n < -30) return -30 if (n > 90) return 90 return Math.round(n) } - async function focusKindButton (code: DiagramKindCode): Promise { + async function focusKindButton(code: DiagramKindCode): Promise { await tick() const btn = gridEl?.querySelector(`button[data-kind="${code}"]`) btn?.focus() } - function pickKind (code: DiagramKindCode): void { + function pickKind(code: DiagramKindCode): void { kindCodeValue = code pickerExpanded = false } - function changeKind (): void { + function changeKind(): void { pickerExpanded = true void focusKindButton(kindCodeValue) } - function onGridKeydown (event: KeyboardEvent): void { + function onGridKeydown(event: KeyboardEvent): void { let dir: 'up' | 'down' | 'left' | 'right' | null = null if (event.key === 'ArrowUp') dir = 'up' else if (event.key === 'ArrowDown') dir = 'down' @@ -112,13 +112,13 @@ } } - function onSliderInput (event: Event): void { + function onSliderInput(event: Event): void { if (!canEdit) return const v = Number((event.target as HTMLInputElement).value) lagValue = clampLag(v) } - async function save (): Promise { + async function save(): Promise { if (!canEdit || !dirty) return const before = { kind: relation.kind, lag: relation.lag } const after = { kind: kindFromCode(kindCodeValue), lag: clampLag(lagValue) } @@ -138,7 +138,7 @@ dispatch('close') } - async function doDelete (): Promise { + async function doDelete(): Promise { if (!canEdit) return // Snapshot the full doc BEFORE delete so undo can re-create it with the // exact same _id (matches the deterministic-id pattern used in @@ -157,7 +157,7 @@ dispatch('close') } - function cancel (): void { + function cancel(): void { dispatch('close') } diff --git a/plugins/tracker-resources/src/components/IssueRelationPresenter.svelte b/plugins/tracker-resources/src/components/IssueRelationPresenter.svelte index 7fc4e58652..5d8d299e43 100644 --- a/plugins/tracker-resources/src/components/IssueRelationPresenter.svelte +++ b/plugins/tracker-resources/src/components/IssueRelationPresenter.svelte @@ -33,12 +33,12 @@ $: targetIdentifier = (target as unknown as { identifier?: string } | undefined)?.identifier ?? '' $: targetTitle = target?.title ?? '' - function formatLag (lag: number): string { + function formatLag(lag: number): string { if (lag === 0) return '' return lag > 0 ? ` +${lag}d` : ` ${lag}d` } - function kindBg (kind: IssueRelation['kind']): string { + function kindBg(kind: IssueRelation['kind']): string { switch (kind) { case 'finish-to-start': return '#6366f1' diff --git a/plugins/tracker-resources/src/components/LabelsView.svelte b/plugins/tracker-resources/src/components/LabelsView.svelte index a6bceda534..d961d8980e 100644 --- a/plugins/tracker-resources/src/components/LabelsView.svelte +++ b/plugins/tracker-resources/src/components/LabelsView.svelte @@ -7,7 +7,7 @@ import { buildFilterKey, setFilters } from '@hcengineering/view-resources' import tracker from '../plugin' - function setFilterTag (tag: TagElement) { + function setFilterTag(tag: TagElement) { const client = getClient() const hierarchy = client.getHierarchy() const attribute = hierarchy.getAttribute(tracker.class.Issue, 'labels') @@ -22,7 +22,7 @@ } as unknown as Filter setFilters([filter]) } - async function onTag (tag: TagElement): Promise { + async function onTag(tag: TagElement): Promise { selectedTagElements.set([tag._id]) const loc = getCurrentResolvedLocation() loc.path[2] = 'tracker' diff --git a/plugins/tracker-resources/src/components/LinkSubIssueActionPopup.svelte b/plugins/tracker-resources/src/components/LinkSubIssueActionPopup.svelte index 1496874b29..4d002e4839 100644 --- a/plugins/tracker-resources/src/components/LinkSubIssueActionPopup.svelte +++ b/plugins/tracker-resources/src/components/LinkSubIssueActionPopup.svelte @@ -56,7 +56,7 @@ * ancestors. Result includes `value._id`. Cycle-protected via a visited * set so a buggy outline a->b->a does not infinite-loop. */ - function computeIgnoreSet (root: Issue, all: Issue[]): Ref[] { + function computeIgnoreSet(root: Issue, all: Issue[]): Ref[] { const ignored = new Set>([root._id]) // Ancestors: walk root.parents[] explicitly — that's the breadcrumb chain. if (Array.isArray(root.parents)) { @@ -86,7 +86,7 @@ return Array.from(ignored) } - async function onClose ({ detail: pickedChild }: CustomEvent): Promise { + async function onClose({ detail: pickedChild }: CustomEvent): Promise { if (pickedChild !== undefined && pickedChild !== null && pickedChild._id !== value._id) { // Move the picked issue's existing rank to the end of the new parent's // children so it sorts after them, matching the SetParentIssueActionPopup diff --git a/plugins/tracker-resources/src/components/NewIssueHeader.svelte b/plugins/tracker-resources/src/components/NewIssueHeader.svelte index 3078a2168d..2bb4779d7f 100644 --- a/plugins/tracker-resources/src/components/NewIssueHeader.svelte +++ b/plugins/tracker-resources/src/components/NewIssueHeader.svelte @@ -49,14 +49,14 @@ loading = false }) - function newProject (): void { + function newProject(): void { closed = false showPopup(tracker.component.CreateProject, {}, 'top', () => { closed = true }) } - function newIssue (): void { + function newIssue(): void { closed = false Analytics.handleEvent(TrackerEvents.NewIssueButtonClicked) showPopup(CreateIssue, { space: currentSpace, shouldSaveDraft: true }, 'top', () => { @@ -66,7 +66,7 @@ let mainActionId: string | undefined = undefined let visibleActions: string[] = [] - function updateActions (draft: boolean, project: boolean, closed: boolean): void { + function updateActions(draft: boolean, project: boolean, closed: boolean): void { mainActionId = draft || !closed ? tracker.string.ResumeDraft : tracker.string.NewIssue if (project) { visibleActions = [tracker.string.CreateProject, mainActionId, tracker.string.Import] diff --git a/plugins/tracker-resources/src/components/RelationsPopup.svelte b/plugins/tracker-resources/src/components/RelationsPopup.svelte index 2e897d08a2..56f1410ad0 100644 --- a/plugins/tracker-resources/src/components/RelationsPopup.svelte +++ b/plugins/tracker-resources/src/components/RelationsPopup.svelte @@ -24,7 +24,7 @@ }) $: hasRelation = Object.values(relations).some(({ length }) => length) - async function updateRelation ( + async function updateRelation( refDocument: Doc, type: keyof typeof relations, operation: '$push' | '$pull', @@ -82,7 +82,7 @@ } ) } - async function removeRelation () { + async function removeRelation() { closePopup('popup') showPopup( ObjectSearchPopup, diff --git a/plugins/tracker-resources/src/components/SearchEmptyState.svelte b/plugins/tracker-resources/src/components/SearchEmptyState.svelte index 43b230fa38..6e0e6faf1a 100644 --- a/plugins/tracker-resources/src/components/SearchEmptyState.svelte +++ b/plugins/tracker-resources/src/components/SearchEmptyState.svelte @@ -14,7 +14,7 @@ // URL shape: /workbench//tracker// — replace the // project-or-special slot with the 'allIssues' special view. The search // text is intentionally not carried over (the view opens unfiltered). - function gotoAllIssues (): void { + function gotoAllIssues(): void { const loc = getCurrentResolvedLocation() if (loc.path.length < 3 || loc.path[2] !== 'tracker') return loc.path[3] = 'allIssues' diff --git a/plugins/tracker-resources/src/components/SetDueDateActionPopup.svelte b/plugins/tracker-resources/src/components/SetDueDateActionPopup.svelte index 449acb7591..bff5058921 100644 --- a/plugins/tracker-resources/src/components/SetDueDateActionPopup.svelte +++ b/plugins/tracker-resources/src/components/SetDueDateActionPopup.svelte @@ -24,7 +24,7 @@ const dispatch = createEventDispatcher() - async function onUpdate ({ detail }: CustomEvent) { + async function onUpdate({ detail }: CustomEvent) { const newDueDate = detail?.getTime() const vv = Array.isArray(value) ? value : [value] diff --git a/plugins/tracker-resources/src/components/SetParentIssueActionPopup.svelte b/plugins/tracker-resources/src/components/SetParentIssueActionPopup.svelte index be8a0bbb33..dc0a083964 100644 --- a/plugins/tracker-resources/src/components/SetParentIssueActionPopup.svelte +++ b/plugins/tracker-resources/src/components/SetParentIssueActionPopup.svelte @@ -36,7 +36,7 @@ sort: { modifiedOn: SortingOrder.Descending } } - async function onClose ({ detail: parentIssue }: CustomEvent): Promise { + async function onClose({ detail: parentIssue }: CustomEvent): Promise { const vv = Array.isArray(value) ? value : [value] for (const docValue of vv) { if ( @@ -70,7 +70,7 @@ $: selected = !Array.isArray(value) ? ('attachedTo' in value ? value.attachedTo : undefined) : undefined $: ignoreObjects = getIgnoreObjects(value) - function getIgnoreObjects (issues: Issue | AttachedData | Issue[] | IssueDraft): Ref[] { + function getIgnoreObjects(issues: Issue | AttachedData | Issue[] | IssueDraft): Ref[] { if (!Array.isArray(issues)) { const own = '_id' in issues ? issues._id : undefined const childs = 'childInfo' in issues ? issues.childInfo.map((c) => c.childId) : [] diff --git a/plugins/tracker-resources/src/components/SubIssues.svelte b/plugins/tracker-resources/src/components/SubIssues.svelte index 86b8b2264e..3d63314fc0 100644 --- a/plugins/tracker-resources/src/components/SubIssues.svelte +++ b/plugins/tracker-resources/src/components/SubIssues.svelte @@ -36,7 +36,7 @@ export let subIssues: IssueDraft[] = [] let lastProject = project let isCollapsed = false - async function handleIssueSwap (ev: CustomEvent<{ fromIndex: number, toIndex: number }>) { + async function handleIssueSwap(ev: CustomEvent<{ fromIndex: number, toIndex: number }>) { if (subIssues) { const { fromIndex, toIndex } = ev.detail const [fromIssue] = subIssues.splice(fromIndex, 1) @@ -47,7 +47,7 @@ } $: onProjectChange(project) - function onProjectChange (project: Project | undefined) { + function onProjectChange(project: Project | undefined) { if (lastProject?._id === project?._id) return lastProject = project if (project === undefined) return @@ -58,7 +58,7 @@ } const client = getClient() // TODO: move to utils - export async function save (parents: IssueParentInfo[], _id: Ref) { + export async function save(parents: IssueParentInfo[], _id: Ref) { if (project === undefined) return saved = true const statuses = subIssues.length > 0 ? getTaskTypeStates(subIssues[0].kind, $taskTypeStore, $statusStore.byId) : [] @@ -125,7 +125,7 @@ saveAttachments(childId) } } - async function saveAttachments (issue: Ref) { + async function saveAttachments(issue: Ref) { const draftAttachments = $draftsStore[`${issue}_attachments`] if (draftAttachments) { for (const key in draftAttachments) { @@ -134,7 +134,7 @@ } removeDraft(issue) } - async function saveAttachment (doc: Attachment, issue: Ref): Promise { + async function saveAttachment(doc: Attachment, issue: Ref): Promise { await client.addCollection( attachment.class.Attachment, projectId, @@ -145,7 +145,7 @@ doc._id ) } - export function load (value: IssueDraft[]) { + export function load(value: IssueDraft[]) { subIssues = value } let saved = false @@ -157,7 +157,7 @@ } }) // TODO: move to utils - export async function removeDraft (_id: string, removeFiles: boolean = false): Promise { + export async function removeDraft(_id: string, removeFiles: boolean = false): Promise { const draftAttachments = $draftsStore[`${_id}_attachments`] DraftController.remove(`${_id}_attachments`) if (removeFiles && draftAttachments) { diff --git a/plugins/tracker-resources/src/components/activity/RelationActivityPresenter.svelte b/plugins/tracker-resources/src/components/activity/RelationActivityPresenter.svelte index 42567400d4..b691a9d49d 100644 --- a/plugins/tracker-resources/src/components/activity/RelationActivityPresenter.svelte +++ b/plugins/tracker-resources/src/components/activity/RelationActivityPresenter.svelte @@ -35,7 +35,7 @@ $: void resolve(_id) - async function resolve (id: Ref): Promise { + async function resolve(id: Ref): Promise { if (value !== undefined) return value = await getOrBuildObject(client, id, tracker.class.IssueRelation) } diff --git a/plugins/tracker-resources/src/components/components/ComponentBrowser.svelte b/plugins/tracker-resources/src/components/components/ComponentBrowser.svelte index 3ab3fbd7e5..4c064a96e3 100644 --- a/plugins/tracker-resources/src/components/components/ComponentBrowser.svelte +++ b/plugins/tracker-resources/src/components/components/ComponentBrowser.svelte @@ -40,7 +40,7 @@ let searchQuery: DocumentQuery = { ...query } let resultQuery: DocumentQuery = { ...searchQuery } - function showCreateDialog (): void { + function showCreateDialog(): void { showPopup(NewComponent, { space, targetElement: null }, 'top') } diff --git a/plugins/tracker-resources/src/components/components/ComponentSelector.svelte b/plugins/tracker-resources/src/components/components/ComponentSelector.svelte index d8e941f8e3..66bd167827 100644 --- a/plugins/tracker-resources/src/components/components/ComponentSelector.svelte +++ b/plugins/tracker-resources/src/components/components/ComponentSelector.svelte @@ -72,7 +72,7 @@ $: handleSelectedComponentIdUpdated(value, rawComponents) - function getComponentInfo (rawComponents: Component[], sp: Component | undefined): SelectPopupValueType[] { + function getComponentInfo(rawComponents: Component[], sp: Component | undefined): SelectPopupValueType[] { return [ ...(isAllowUnset ? [ diff --git a/plugins/tracker-resources/src/components/components/DeleteComponentPresenter.svelte b/plugins/tracker-resources/src/components/components/DeleteComponentPresenter.svelte index e46ccf490e..1d9a21404f 100644 --- a/plugins/tracker-resources/src/components/components/DeleteComponentPresenter.svelte +++ b/plugins/tracker-resources/src/components/components/DeleteComponentPresenter.svelte @@ -30,7 +30,7 @@ const client = getClient() const dispatch = createEventDispatcher() - async function showConfirmationDialog (): Promise { + async function showConfirmationDialog(): Promise { showPopup( MessageBox, { @@ -49,7 +49,7 @@ ) } - async function removeComponent (): Promise { + async function removeComponent(): Promise { await client.remove(value) } diff --git a/plugins/tracker-resources/src/components/components/EditComponent.svelte b/plugins/tracker-resources/src/components/components/EditComponent.svelte index f9d48ab15a..f91be533ca 100644 --- a/plugins/tracker-resources/src/components/components/EditComponent.svelte +++ b/plugins/tracker-resources/src/components/components/EditComponent.svelte @@ -32,7 +32,7 @@ $: descriptionKey = client.getHierarchy().getAttribute(tracker.class.Component, 'description') let descriptionBox: AttachmentStyleBoxEditor - function hashFromId (id: string): number { + function hashFromId(id: string): number { let h = 0 for (let i = 0; i < id.length; i++) h = ((h << 5) - h + id.charCodeAt(i)) | 0 return Math.abs(h) @@ -42,7 +42,7 @@ $: swatchCss = getPlatformColor(effectiveColor, $themeStore.dark) $: selectedName = getPlatformColors($themeStore.dark)[effectiveColor]?.name - function pickColor (ev: MouseEvent): void { + function pickColor(ev: MouseEvent): void { showPopup( ColorsPopup, { colors: getPlatformColors($themeStore.dark), selected: selectedName, columns: 8 }, diff --git a/plugins/tracker-resources/src/components/components/NewComponent.svelte b/plugins/tracker-resources/src/components/components/NewComponent.svelte index d717ab64d4..6b9b3f95b0 100644 --- a/plugins/tracker-resources/src/components/components/NewComponent.svelte +++ b/plugins/tracker-resources/src/components/components/NewComponent.svelte @@ -38,7 +38,7 @@ let _space = space - async function onSave () { + async function onSave() { await client.createDoc(tracker.class.Component, _space, object) } diff --git a/plugins/tracker-resources/src/components/dependency/MiniDependencyDiagram.svelte b/plugins/tracker-resources/src/components/dependency/MiniDependencyDiagram.svelte index 5dfd20cb71..47c33c2e7f 100644 --- a/plugins/tracker-resources/src/components/dependency/MiniDependencyDiagram.svelte +++ b/plugins/tracker-resources/src/components/dependency/MiniDependencyDiagram.svelte @@ -50,7 +50,7 @@ shortText = t }) - function onClick (): void { + function onClick(): void { if (disabled) return dispatch('pick', kind) } diff --git a/plugins/tracker-resources/src/components/gantt/ConfirmCascadePopup.svelte b/plugins/tracker-resources/src/components/gantt/ConfirmCascadePopup.svelte index 46c2b4fa53..68f87c3b9b 100644 --- a/plugins/tracker-resources/src/components/gantt/ConfirmCascadePopup.svelte +++ b/plugins/tracker-resources/src/components/gantt/ConfirmCascadePopup.svelte @@ -71,7 +71,7 @@ }) $: barAreaWidth = POPUP_WIDTH - LABEL_WIDTH - 32 - function labelFor (i: Issue): string { + function labelFor(i: Issue): string { // Match the predecessor-column / sidebar rendering convention: prefix // with identifier (PROJ-12) and append the title for human // disambiguation. CSS clip-path on the element keeps it inside @@ -94,7 +94,7 @@ return '—' } - function buildRows (p: PrimaryEdit[], s: CascadeShift[]): Row[] { + function buildRows(p: PrimaryEdit[], s: CascadeShift[]): Row[] { const out: Row[] = [] for (const pe of p) { out.push({ @@ -123,7 +123,7 @@ return out.sort((a, b) => a.newStart - b.newStart) } - function computeDateRange (rs: Row[]): { min: number, max: number } { + function computeDateRange(rs: Row[]): { min: number, max: number } { if (rs.length === 0) return { min: Date.now(), max: Date.now() + DAY_MS } let min = Infinity let max = -Infinity @@ -135,17 +135,17 @@ return { min: min - padDays * DAY_MS, max: max + padDays * DAY_MS } } - function xOf (t: number): number { + function xOf(t: number): number { const span = dateRange.max - dateRange.min if (span <= 0) return 0 return ((t - dateRange.min) / span) * barAreaWidth } - function fmtTick (t: number): string { + function fmtTick(t: number): string { return new Date(t).toLocaleDateString(undefined, { month: 'short', day: 'numeric' }) } - function ticks (): number[] { + function ticks(): number[] { const span = dateRange.max - dateRange.min const count = 5 const result: number[] = [] @@ -155,16 +155,16 @@ return result } - function onConfirm (): void { + function onConfirm(): void { if (lockedIssues.length > 0) return dispatch('close', true) } - function onCancel (): void { + function onCancel(): void { dispatch('close', false) } - function onKey (e: KeyboardEvent): void { + function onKey(e: KeyboardEvent): void { if (e.key === 'Escape') { e.preventDefault() onCancel() diff --git a/plugins/tracker-resources/src/components/gantt/GanttBar.svelte b/plugins/tracker-resources/src/components/gantt/GanttBar.svelte index 2f50dd869a..fd1a6eae37 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttBar.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttBar.svelte @@ -103,7 +103,7 @@ let hovered = false - function onBarContextMenu (evt: MouseEvent): void { + function onBarContextMenu(evt: MouseEvent): void { // Context-menu is currently issue-only (the menu wires Issue actions); // milestone bars don't surface it. This stays gated until the // milestone menu is designed. @@ -128,7 +128,7 @@ let longPressStartY: number = 0 let longPressPointerId: number | null = null - function clearLongPressTimer (): void { + function clearLongPressTimer(): void { if (longPressTimer !== null) { clearTimeout(longPressTimer) longPressTimer = null @@ -142,7 +142,7 @@ * Dispatch the actual drag-start. Extracted so both the 'allow' and * 'long-press' branches can call it with the same payload shape. */ - function dispatchDragStart ( + function dispatchDragStart( edge: 'left' | 'right' | 'body', cursorX: number, modifiers: { metaKey: boolean, ctrlKey: boolean, shiftKey: boolean } @@ -159,7 +159,7 @@ * the previous mouse+pointer double-dispatch issue called out in the * Pre-Flight (Item 9). */ - function onBarPointer (edge: 'left' | 'right' | 'body') { + function onBarPointer(edge: 'left' | 'right' | 'body') { return (evt: PointerEvent): void => { // Selected bar swallows the pointerdown so the canvas-pan handler // upstream doesn't also grab it. Preserved from the legacy @@ -200,7 +200,7 @@ } } - function onBarPointerMove (evt: PointerEvent): void { + function onBarPointerMove(evt: PointerEvent): void { if (longPressTimer === null) return if (longPressPointerId !== null && evt.pointerId !== longPressPointerId) return const dx = evt.clientX - longPressStartX @@ -208,12 +208,12 @@ if (Math.sqrt(dx * dx + dy * dy) > MOVE_THRESHOLD_PX) clearLongPressTimer() } - function onBarPointerEnd (evt: PointerEvent): void { + function onBarPointerEnd(evt: PointerEvent): void { if (longPressPointerId !== null && evt.pointerId !== longPressPointerId) return clearLongPressTimer() } - function onBarClick (evt: MouseEvent): void { + function onBarClick(evt: MouseEvent): void { if (!editable || dragTarget === undefined) return if (evt.button !== 0) return dispatch('barClick', { @@ -262,22 +262,22 @@ mode === 'status' && issue._id != null ? progressFraction( - issue as any, - $subsStore?.get(String(issue._id)) ?? [], - ctxStore !== undefined ? $ctxStore.statusCategoryFor : () => null - ) + issue as any, + $subsStore?.get(String(issue._id)) ?? [], + ctxStore !== undefined ? $ctxStore.statusCategoryFor : () => null + ) : null $: triple = ctxStore !== undefined && modeStore !== undefined ? resolveBarColors(issue, mode, $ctxStore) : resolveBarColors(issue, 'status', { - statusCategoryFor: () => null, - priorityFor: (i) => i.priority, - assigneeRankFor: () => null, - componentColorFor: () => null, - milestoneColorFor: () => null, - hashFromId: () => 0 - }) + statusCategoryFor: () => null, + priorityFor: (i) => i.priority, + assigneeRankFor: () => null, + componentColorFor: () => null, + milestoneColorFor: () => null, + hashFromId: () => 0 + }) $: resolvedFill = triple.paletteIndex !== undefined ? getPlatformColor(triple.paletteIndex, $themeStore.dark) : triple.fill $: resolvedBorder = diff --git a/plugins/tracker-resources/src/components/gantt/GanttBarResizeHandles.svelte b/plugins/tracker-resources/src/components/gantt/GanttBarResizeHandles.svelte index 81e529c07b..48ba11a5b1 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttBarResizeHandles.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttBarResizeHandles.svelte @@ -51,7 +51,7 @@ let longPressStartY = 0 let longPressPointerId: number | null = null - function clearLongPressTimer (): void { + function clearLongPressTimer(): void { if (longPressTimer !== null) { clearTimeout(longPressTimer) longPressTimer = null @@ -61,7 +61,7 @@ onDestroy(clearLongPressTimer) - function onHandlePointer (edge: 'left' | 'right') { + function onHandlePointer(edge: 'left' | 'right') { return (evt: PointerEvent): void => { // Swallow the pointerdown so the canvas-pan handler upstream does not // also grab it — same guard the selected bar body applies. @@ -87,7 +87,7 @@ } } - function onHandlePointerMove (evt: PointerEvent): void { + function onHandlePointerMove(evt: PointerEvent): void { if (longPressTimer === null) return if (longPressPointerId !== null && evt.pointerId !== longPressPointerId) return const dx = evt.clientX - longPressStartX @@ -95,7 +95,7 @@ if (Math.sqrt(dx * dx + dy * dy) > MOVE_THRESHOLD_PX) clearLongPressTimer() } - function onHandlePointerEnd (evt: PointerEvent): void { + function onHandlePointerEnd(evt: PointerEvent): void { if (longPressPointerId !== null && evt.pointerId !== longPressPointerId) return clearLongPressTimer() } diff --git a/plugins/tracker-resources/src/components/gantt/GanttCanvas.svelte b/plugins/tracker-resources/src/components/gantt/GanttCanvas.svelte index e814e8d800..fab3bd517e 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttCanvas.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttCanvas.svelte @@ -37,7 +37,7 @@ scrollToRow: { issue: Ref } }>() - function openIssue (i: { _id: any, _class: any }): void { + function openIssue(i: { _id: any, _class: any }): void { dispatch('openIssue', { issue: { _id: i._id as string, _class: i._class as string } }) } @@ -127,7 +127,7 @@ })() $: hasViolation = (issueId: Ref): boolean => violatedIssueIds.has(issueId) - function statusCategoryFor (issue: any): string | null { + function statusCategoryFor(issue: any): string | null { if (statusCategoryMap === undefined) return null const sid = issue?.status as string | undefined if (sid === undefined) return null @@ -155,7 +155,7 @@ $: activeIssueIdStr = activeDragTargetId(dragState) $: anyDragActive = dragState.kind !== 'idle' && dragState.kind !== 'hover-bar' - function isDimmed (issueId: unknown): boolean { + function isDimmed(issueId: unknown): boolean { return anyDragActive && activeIssueIdStr !== null && String(issueId) !== activeIssueIdStr } @@ -255,15 +255,15 @@ return null })() - function rowKey (row: LayoutRow): string { + function rowKey(row: LayoutRow): string { return row.id } - function getDeadline (issue: Issue): number | null { + function getDeadline(issue: Issue): number | null { return issue.deadline ?? null } - function summaryFor (row: LayoutRow): SummaryRange | null { + function summaryFor(row: LayoutRow): SummaryRange | null { if (row.kind === 'milestone' && row.milestone !== null) { return summaryRanges.get(row.id) ?? null } diff --git a/plugins/tracker-resources/src/components/gantt/GanttConfirmCommitPopup.svelte b/plugins/tracker-resources/src/components/gantt/GanttConfirmCommitPopup.svelte index 741f2c5a9b..ef72779404 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttConfirmCommitPopup.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttConfirmCommitPopup.svelte @@ -25,7 +25,7 @@ const dispatch = createEventDispatcher<{ close: boolean }>() - function fmt (ts: number): string { + function fmt(ts: number): string { return new Date(ts).toLocaleDateString(undefined, { day: 'numeric', month: 'short', year: 'numeric' }) } diff --git a/plugins/tracker-resources/src/components/gantt/GanttConnectorDot.svelte b/plugins/tracker-resources/src/components/gantt/GanttConnectorDot.svelte index 29c0a5edcd..2721fdbb63 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttConnectorDot.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttConnectorDot.svelte @@ -39,7 +39,7 @@ let lastDownAt = 0 - function onDown (evt: MouseEvent): void { + function onDown(evt: MouseEvent): void { if (evt.button !== 0) return const now = Date.now() if (now - lastDownAt < 30) return diff --git a/plugins/tracker-resources/src/components/gantt/GanttDependencyArrow.svelte b/plugins/tracker-resources/src/components/gantt/GanttDependencyArrow.svelte index 1270e47a3c..30c603c036 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttDependencyArrow.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttDependencyArrow.svelte @@ -117,13 +117,13 @@ ? visibility.targetEdge : null - function onSourceIndicator (evt: MouseEvent): void { + function onSourceIndicator(evt: MouseEvent): void { if (evt.button !== 0) return evt.preventDefault() evt.stopPropagation() dispatch('scrollToRow', { issue: relation.attachedTo }) } - function onTargetIndicator (evt: MouseEvent): void { + function onTargetIndicator(evt: MouseEvent): void { if (evt.button !== 0) return evt.preventDefault() evt.stopPropagation() @@ -158,16 +158,16 @@ } })() - function onOpen (evt: MouseEvent): void { + function onOpen(evt: MouseEvent): void { if (evt.button !== 0) return evt.preventDefault() evt.stopPropagation() dispatch('openEditor', { relation }) } - function onEnter (): void { + function onEnter(): void { dispatch('hoverEdge', { source: relation.attachedTo, target: relation.target }) } - function onLeave (): void { + function onLeave(): void { dispatch('hoverEdge', null) } diff --git a/plugins/tracker-resources/src/components/gantt/GanttDependencyLayer.svelte b/plugins/tracker-resources/src/components/gantt/GanttDependencyLayer.svelte index 5879e1b0d6..c0b359220f 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttDependencyLayer.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttDependencyLayer.svelte @@ -16,7 +16,7 @@ const BOTH_VISIBLE: ArrowVisibility = { kind: 'both-visible' } - function resolveVisibility (src: BarRect | null, dst: BarRect | null, bounds: YBounds | undefined): ArrowVisibility { + function resolveVisibility(src: BarRect | null, dst: BarRect | null, bounds: YBounds | undefined): ArrowVisibility { if (bounds === undefined) return BOTH_VISIBLE return classifyArrowVisibility(src, dst, bounds) } @@ -51,7 +51,7 @@ $: dragState = $activeDrag - function isDimmed (rel: IssueRelation): boolean { + function isDimmed(rel: IssueRelation): boolean { // Nothing hovered -> no dimming. if (hoveredIssue === null && hoveredEdge === null) return false return !(connectedIds.has(rel.attachedTo) && connectedIds.has(rel.target)) diff --git a/plugins/tracker-resources/src/components/gantt/GanttHelpPopup.svelte b/plugins/tracker-resources/src/components/gantt/GanttHelpPopup.svelte index 0279370633..e1b66753f3 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttHelpPopup.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttHelpPopup.svelte @@ -15,7 +15,7 @@ */ const dispatch = createEventDispatcher<{ close: undefined }>() - function onKey (e: KeyboardEvent): void { + function onKey(e: KeyboardEvent): void { if (e.key === 'Escape' || e.key === '?') { e.preventDefault() dispatch('close') diff --git a/plugins/tracker-resources/src/components/gantt/GanttResizeOverlay.svelte b/plugins/tracker-resources/src/components/gantt/GanttResizeOverlay.svelte index 8232dcbd94..4d833f8fe6 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttResizeOverlay.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttResizeOverlay.svelte @@ -18,11 +18,11 @@ const DAY_MS = 86_400_000 - function fmt (ts: number): string { + function fmt(ts: number): string { return new Date(ts).toLocaleDateString(undefined, { day: 'numeric', month: 'short', year: 'numeric' }) } - function originGeometry (state: DragState): { x: number, w: number } | null { + function originGeometry(state: DragState): { x: number, w: number } | null { if (state.kind === 'dragging-body') { const x = timeScale.toX(state.originStart) return { x, w: timeScale.toX(state.originEnd) - x + timeScale.pxPerDay } @@ -41,7 +41,7 @@ return null } - function guideX (state: DragState): number | null { + function guideX(state: DragState): number | null { if (state.kind === 'dragging-body') return timeScale.toX(state.previewStart) if (state.kind === 'resizing-left') return timeScale.toX(state.previewStart) if (state.kind === 'resizing-right') return timeScale.toX(state.previewEnd) + timeScale.pxPerDay @@ -49,7 +49,7 @@ return null } - function pillDate (state: DragState): number | null { + function pillDate(state: DragState): number | null { if (state.kind === 'dragging-body') return state.previewStart if (state.kind === 'resizing-left') return state.previewStart if (state.kind === 'resizing-right') return state.previewEnd @@ -64,7 +64,7 @@ * ({delta} d)`); the sign is part of `delta` because the message renders it * inline. */ - function durationTooltipParams (state: DragState): { from: number, to: number, delta: string } | null { + function durationTooltipParams(state: DragState): { from: number, to: number, delta: string } | null { let before: number let after: number if (state.kind === 'resizing-left') { diff --git a/plugins/tracker-resources/src/components/gantt/GanttSaveViewPopup.svelte b/plugins/tracker-resources/src/components/gantt/GanttSaveViewPopup.svelte index cc3d1772cb..b0c19242f9 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttSaveViewPopup.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttSaveViewPopup.svelte @@ -42,13 +42,13 @@ // `onCancel` directly bypasses the `` chain // which was empirically not closing the popup on X-click in // (user report Refactor A). - async function onSave (): Promise { + async function onSave(): Promise { const trimmed = viewName.trim() if (trimmed.length === 0) return dispatch('close', { name: trimmed, fixTimeWindow, sharable }) } - function onCancel (): void { + function onCancel(): void { dispatch('close') } diff --git a/plugins/tracker-resources/src/components/gantt/GanttSidebar.svelte b/plugins/tracker-resources/src/components/gantt/GanttSidebar.svelte index e1fb181633..b2c55bc700 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttSidebar.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttSidebar.svelte @@ -172,23 +172,23 @@ (rows.length > 0 ? rows[rows.length - 1].y + rows[rows.length - 1].height : 0) $: yViewport = virtualizationOn ? computeYViewport({ - rowCount: rows.length, - rowHeight, - scrollTop, - viewportHeight, - overscan - }) + rowCount: rows.length, + rowHeight, + scrollTop, + viewportHeight, + overscan + }) : null // Slice on the re-stamped vy (so post-sort order matters) and project the // result back to `{ row, vy }` pairs the template iterates over. $: visibleIndexed = virtualizationOn && yViewport !== null ? indexedRows.filter((p) => { - return ( - p.vy + (p.row.height ?? rowHeight) > scrollTop - overscan * rowHeight && + return ( + p.vy + (p.row.height ?? rowHeight) > scrollTop - overscan * rowHeight && p.vy < scrollTop + viewportHeight + overscan * rowHeight - ) - }) + ) + }) : indexedRows // When virtualizing, render the slice anchored to its re-stamped vy; the // wrapper carries an explicit height so the scroller's scrollHeight @@ -209,27 +209,27 @@ widthChange: { column: SidebarColumnKey, width: number, commit: boolean } }>() - function handleSort (evt: CustomEvent<{ column: SidebarColumnKey }>): void { + function handleSort(evt: CustomEvent<{ column: SidebarColumnKey }>): void { dispatch('sortChange', { column: evt.detail.column }) } - function handleResizePreview (evt: CustomEvent<{ column: SidebarColumnKey, width: number }>): void { + function handleResizePreview(evt: CustomEvent<{ column: SidebarColumnKey, width: number }>): void { dispatch('widthChange', { column: evt.detail.column, width: evt.detail.width, commit: false }) } - function handleResizeCommit (evt: CustomEvent<{ column: SidebarColumnKey, width: number }>): void { + function handleResizeCommit(evt: CustomEvent<{ column: SidebarColumnKey, width: number }>): void { dispatch('widthChange', { column: evt.detail.column, width: evt.detail.width, commit: true }) } - function openIssue (issue: { _id: any, _class: any }): void { + function openIssue(issue: { _id: any, _class: any }): void { dispatch('openIssue', { issue: { _id: issue._id as string, _class: issue._class as string } }) } - function openMilestone (milestoneId: Ref): void { + function openMilestone(milestoneId: Ref): void { dispatch('openMilestone', { milestoneId }) } - function onDragGripDown (issue: Issue): (evt: MouseEvent) => void { + function onDragGripDown(issue: Issue): (evt: MouseEvent) => void { return (evt: MouseEvent): void => { dispatch('rowDragStart', { issue, cursorX: evt.clientX }) } @@ -242,12 +242,12 @@ * svelte-check from flattening the surrounding event handlers' parameter * types to `any`. */ - function breadcrumbTooltip (row: LayoutRow): { label: IntlString } | undefined { + function breadcrumbTooltip(row: LayoutRow): { label: IntlString } | undefined { if (row.isBreadcrumb !== true) return undefined return { label: tracker.string.GanttTreeBreadcrumb } } - function onRowContextMenu (evt: MouseEvent, row: LayoutRow): void { + function onRowContextMenu(evt: MouseEvent, row: LayoutRow): void { if (row.issue === null) return evt.preventDefault() evt.stopPropagation() @@ -257,7 +257,7 @@ }) } - function jumpDirection (obj: { startDate: number | null, dueDate: number | null }): 'left' | 'right' | null { + function jumpDirection(obj: { startDate: number | null, dueDate: number | null }): 'left' | 'right' | null { if (timeScale === undefined) return null if (viewportRight <= viewportLeft) return null if (obj.startDate == null && obj.dueDate == null) return null @@ -270,7 +270,7 @@ return null } - function rowJumpTarget (row: LayoutRow): { startDate: number | null, dueDate: number | null } | null { + function rowJumpTarget(row: LayoutRow): { startDate: number | null, dueDate: number | null } | null { if (row.kind === 'issue' && row.issue !== null) { return { startDate: row.issue.startDate, dueDate: row.issue.dueDate } } @@ -280,7 +280,7 @@ return null } - function rowJumpX (row: LayoutRow): number | null { + function rowJumpX(row: LayoutRow): number | null { if (timeScale === undefined) return null const tgt = rowJumpTarget(row) if (tgt === null) return null @@ -297,7 +297,7 @@ * that is filtered out, collapsed or in another group lane still shows its * number instead of a bare "FS+2d". */ - function issueNumberOf (ref: Ref): string { + function issueNumberOf(ref: Ref): string { return resolveIssueNumber(ref, issueIdentifiers, rows) } diff --git a/plugins/tracker-resources/src/components/gantt/GanttSidebarColumn.svelte b/plugins/tracker-resources/src/components/gantt/GanttSidebarColumn.svelte index e38db52886..9aa305b96a 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttSidebarColumn.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttSidebarColumn.svelte @@ -52,7 +52,7 @@ // GanttSidebar (compact path); `isCritical` above is already reactive. $: slackDays = (id: Ref): number => Math.round((slack.get(id) ?? 0) / DAY_MS) - function priorityLabel (p: IssuePriority): string { + function priorityLabel(p: IssuePriority): string { switch (p) { case IssuePriority.Urgent: return 'Urgent' @@ -68,7 +68,7 @@ } /** Render a Timestamp as `YYYY-MM-DD` — locale-stable, ISO short form. */ - function formatDateShort (ts: number | null | undefined): string { + function formatDateShort(ts: number | null | undefined): string { if (ts === null || ts === undefined) return '—' const d = new Date(ts) const y = d.getUTCFullYear() @@ -77,7 +77,7 @@ return `${y}-${m}-${day}` } - function onTitleClick (): void { + function onTitleClick(): void { if (issue === null) return dispatch('openIssue', { issue: { _id: String(issue._id), _class: String(issue._class) } }) } diff --git a/plugins/tracker-resources/src/components/gantt/GanttSidebarHeaderCell.svelte b/plugins/tracker-resources/src/components/gantt/GanttSidebarHeaderCell.svelte index 0a345bc445..d2eea50bfe 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttSidebarHeaderCell.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttSidebarHeaderCell.svelte @@ -41,7 +41,7 @@ let startX = 0 let startWidth = 0 - function onMouseDown (evt: MouseEvent): void { + function onMouseDown(evt: MouseEvent): void { evt.preventDefault() evt.stopPropagation() resizing = true @@ -51,13 +51,13 @@ window.addEventListener('mouseup', onWindowUp) } - function onWindowMove (evt: MouseEvent): void { + function onWindowMove(evt: MouseEvent): void { if (!resizing) return const next = clampWidth(startWidth + (evt.clientX - startX)) dispatch('resizePreview', { column, width: next }) } - function onWindowUp (evt: MouseEvent): void { + function onWindowUp(evt: MouseEvent): void { if (!resizing) return const final = clampWidth(startWidth + (evt.clientX - startX)) resizing = false @@ -66,12 +66,12 @@ dispatch('resizeCommit', { column, width: final }) } - function onLabelClick (): void { + function onLabelClick(): void { if (!sortable) return dispatch('sort', { column }) } - function ariaSort (dir: SortDirection | null): 'ascending' | 'descending' | 'none' { + function ariaSort(dir: SortDirection | null): 'ascending' | 'descending' | 'none' { if (dir === 'asc') return 'ascending' if (dir === 'desc') return 'descending' return 'none' diff --git a/plugins/tracker-resources/src/components/gantt/GanttToolbarBar.svelte b/plugins/tracker-resources/src/components/gantt/GanttToolbarBar.svelte index c0f0209167..1709815fba 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttToolbarBar.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttToolbarBar.svelte @@ -75,7 +75,7 @@ // button can swap between the maximize and minimize glyph. Only the // `trailing` instance renders the button, so only it needs the listener. let isFullscreen = false - function onFullscreenChange (): void { + function onFullscreenChange(): void { isFullscreen = document.fullscreenElement != null } onMount(() => { @@ -111,7 +111,7 @@ const tierWidths: Partial> = {} /** Used `column-gap` of the cluster in px; `normal` / unparsable → fallback. */ - function measureGapPx (el: HTMLElement): number { + function measureGapPx(el: HTMLElement): number { const parsed = Number.parseFloat(getComputedStyle(el).columnGap) return Number.isFinite(parsed) && parsed >= 0 ? parsed : GAP_FALLBACK_PX } @@ -144,11 +144,11 @@ ganttToolbarHiddenTiers.set(hiddenTiers) } - function sameTiers (a: readonly ToolbarTier[], b: readonly ToolbarTier[]): boolean { + function sameTiers(a: readonly ToolbarTier[], b: readonly ToolbarTier[]): boolean { return a.length === b.length && a.every((v, i) => v === b[i]) } - async function recompute (): Promise { + async function recompute(): Promise { if (section !== 'cluster') return await tick() if (clusterEl === undefined) return @@ -181,12 +181,12 @@ void recompute() } - function onClusterResize (el: Element): void { + function onClusterResize(el: Element): void { const w = (el as HTMLElement).clientWidth if (w !== availableWidth) availableWidth = w } - function openOverflowPopup (e: MouseEvent): void { + function openOverflowPopup(e: MouseEvent): void { showPopup(GanttToolbarOverflowPopup, { tiers: $ganttToolbarHiddenTiers }, eventToHTMLElement(e)) } diff --git a/plugins/tracker-resources/src/components/gantt/GanttToolbarTiers.svelte b/plugins/tracker-resources/src/components/gantt/GanttToolbarTiers.svelte index aa1ae2eed8..66b8d4afc4 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttToolbarTiers.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttToolbarTiers.svelte @@ -59,11 +59,11 @@ // Wrapper handlers so template expressions stay assignment-free (Svelte 4 // does not parse TS casts inside attribute expressions). - function onDateInput (e: Event): void { + function onDateInput(e: Event): void { const v = (e.currentTarget as HTMLInputElement).value snap.setDatePickerValue(v) } - function onDateChange (e: Event): void { + function onDateChange(e: Event): void { const v = (e.currentTarget as HTMLInputElement).value snap.jumpToDate(v) } diff --git a/plugins/tracker-resources/src/components/gantt/GanttView.svelte b/plugins/tracker-resources/src/components/gantt/GanttView.svelte index 8c6899dd15..13e003bb03 100644 --- a/plugins/tracker-resources/src/components/gantt/GanttView.svelte +++ b/plugins/tracker-resources/src/components/gantt/GanttView.svelte @@ -235,7 +235,7 @@ }) } } - function ariaLabelOf (key: IntlString): string { + function ariaLabelOf(key: IntlString): string { return ariaLabels[key] ?? '' } @@ -246,7 +246,7 @@ y: 0, row: null } - function onRowHover (e: CustomEvent<{ id: string | null, row?: LayoutRow, mouseX?: number, mouseY?: number }>): void { + function onRowHover(e: CustomEvent<{ id: string | null, row?: LayoutRow, mouseX?: number, mouseY?: number }>): void { hoveredRowId = e.detail.id if (e.detail.id !== null && e.detail.row !== undefined && e.detail.mouseX !== undefined) { tooltipState = { visible: true, x: e.detail.mouseX, y: e.detail.mouseY ?? 0, row: e.detail.row } @@ -332,7 +332,7 @@ * store write propagates straight back down into our `viewOptions` prop * via IssuesView's `getViewOptions(viewlet, $viewOptionStore)`. */ - function persistViewOption (key: string, value: unknown): void { + function persistViewOption(key: string, value: unknown): void { if (viewlet === undefined) return const base = (viewOptions as unknown as Record | undefined) ?? {} setViewOptions(viewlet, { ...base, [key]: value } as unknown as ViewOptions) @@ -558,7 +558,7 @@ // the previous mode. let ganttGroupBy: GroupByKey = 'none' $: applyGroupByFromViewOptions((viewOptions as Record | undefined)?.ganttGroupBy) - function applyGroupByFromViewOptions (raw: unknown): void { + function applyGroupByFromViewOptions(raw: unknown): void { const next: GroupByKey = typeof raw === 'string' && (GROUP_BY_KEYS as readonly string[]).includes(raw) ? (raw as GroupByKey) : 'none' if (next === ganttGroupBy) return @@ -599,7 +599,7 @@ * was indexed by keys from the previous mode and would either be a no-op * or accidentally collapse a same-named bucket in the new mode. */ - function setGroupBy (next: GroupByKey): void { + function setGroupBy(next: GroupByKey): void { if (next === ganttGroupBy) return ganttGroupBy = next collapsedGroups = new Set() @@ -608,13 +608,13 @@ // viewlet re-mount / route change. persistViewOption('ganttGroupBy', next) } - function toggleGroup (key: string): void { + function toggleGroup(key: string): void { const next = new Set(collapsedGroups) if (next.has(key)) next.delete(key) else next.add(key) collapsedGroups = next } - function onGroupBySelectChange (e: Event): void { + function onGroupBySelectChange(e: Event): void { const target = e.target if (target instanceof HTMLSelectElement) { setGroupBy(target.value as GroupByKey) @@ -624,7 +624,7 @@ // 200 ms debounced recompute on issues / relations / toggle / cfg change. $: scheduleCpRecompute(issues, relations, showCriticalPath, showSlackColumn, effectiveCalendar) - function setZoom (z: ZoomLevel): void { + function setZoom(z: ZoomLevel): void { zoom = z // C — preset button clears any wheel-zoom override so the // canonical preset px/day takes over again. @@ -682,13 +682,13 @@ lastVisibleDaysOut = visibleDays } - function onZoomDropdownSelected (e: CustomEvent): void { + function onZoomDropdownSelected(e: CustomEvent): void { const id = e.detail if (id === undefined || id === 'custom') return setZoom(id) } - function applyVisibleDaysInput (): void { + function applyVisibleDaysInput(): void { const days = Number(visibleDaysInput) if (!Number.isFinite(days) || days < MIN_VISIBLE_DAYS) { visibleDaysInput = visibleDays @@ -708,7 +708,7 @@ queueMicrotask(syncViewport) } - function onVisibleDaysKeyDown (e: KeyboardEvent): void { + function onVisibleDaysKeyDown(e: KeyboardEvent): void { if (e.key === 'Enter') { applyVisibleDaysInput() ;(e.target as HTMLElement | null)?.blur?.() @@ -724,7 +724,7 @@ // block below. The reverse direction (writing) lives in // saveCurrentGanttView() / updateCurrentGanttView() further down. let lastAppliedSavedViewId: string | null = null - async function applyGanttSavedView (raw: Record | undefined): Promise { + async function applyGanttSavedView(raw: Record | undefined): Promise { const opts = extractGanttSavedView(raw) zoom = opts.zoomLevel userPxPerDay = null @@ -779,7 +779,7 @@ } } - function buildSavedViewOptions (fixTimeWindow: boolean): Record { + function buildSavedViewOptions(fixTimeWindow: boolean): Record { const base = (viewOptions as Record | undefined) ?? {} const payload: GanttSavedViewOptions = { zoomLevel: zoom, @@ -796,7 +796,7 @@ return mergeGanttSavedView(base, payload) } - async function saveCurrentGanttView (name: string, fixTimeWindow: boolean, sharable: boolean): Promise { + async function saveCurrentGanttView(name: string, fixTimeWindow: boolean, sharable: boolean): Promise { const loc = getCurrentResolvedLocation() loc.fragment = undefined const viewletId = viewlet?._id @@ -820,13 +820,13 @@ } } - async function updateCurrentGanttView (fv: FilteredView, fixTimeWindow: boolean): Promise { + async function updateCurrentGanttView(fv: FilteredView, fixTimeWindow: boolean): Promise { const merged = buildSavedViewOptions(fixTimeWindow) await getClient().update(fv, { viewOptions: merged as unknown as ViewOptions }) selectedFilterStore.set({ ...fv, viewOptions: merged as unknown as ViewOptions }) } - function openSaveViewPopup (): void { + function openSaveViewPopup(): void { const cur = $selectedFilterStore const currentlyFixed = cur?.viewletId === viewlet?._id @@ -847,7 +847,7 @@ * picks up and applies via `applyGanttSavedView`. A "__DEFAULT__" * sentinel clears the selection. */ - function openLoadViewMenu (anchor: HTMLElement): void { + function openLoadViewMenu(anchor: HTMLElement): void { const items: SelectPopupValueType[] = [] items.push({ id: '__DEFAULT__', @@ -901,7 +901,7 @@ * the toolbar (SelectPopup honours `eventToHTMLElement(event)` as * anchor). Fullscreen stays in the toolbar as a frequent affordance. */ - function openMoreActionsMenu (event: MouseEvent): void { + function openMoreActionsMenu(event: MouseEvent): void { const SAVE_ID = '__gantt_save__' const LOAD_ID = '__gantt_load__' const PNG_ID = '__gantt_png__' @@ -952,7 +952,7 @@ * the whole `savedview` toolbar tier — "modified" marker plus update * button — was unreachable dead code. */ - function isCurrentGanttViewModified (fv: FilteredView | undefined, current: GanttSavedViewOptions): boolean { + function isCurrentGanttViewModified(fv: FilteredView | undefined, current: GanttSavedViewOptions): boolean { if (fv === undefined || fv.viewletId !== viewlet?._id) return false const saved = (fv.viewOptions as Record | undefined) ?? {} if (saved.ganttZoomLevel !== current.zoomLevel) return true @@ -974,7 +974,7 @@ // Inline-extracted handler — keeping the TS cast out of an `on:click={…}` // attribute, which the Svelte 4 parser does not tolerate (// build-fix: inline `as Record<…>` inside an attribute value tripped // `Unexpected token (ts)` during svelte-check). - function onUpdateSavedViewClick (): void { + function onUpdateSavedViewClick(): void { const cur = $selectedFilterStore if (cur === undefined) return const opts = cur.viewOptions as Record | undefined @@ -1096,7 +1096,7 @@ * must belong to the currently displayed project (see * CalendarStateMachine.isTicketCurrent). */ - function mutationStillCurrent (targetSpace?: Ref): boolean { + function mutationStillCurrent(targetSpace?: Ref): boolean { return activeMutationTicket !== null && calendarState.isTicketCurrent(activeMutationTicket, targetSpace) } @@ -1306,7 +1306,7 @@ subIssuesByParent.set(new Map()) } - function paddingDays (z: ZoomLevel): number { + function paddingDays(z: ZoomLevel): number { switch (z) { case 'day': return 1 @@ -1321,7 +1321,7 @@ } } - function computeDateRange (iss: Issue[], ms: Milestone[], z: ZoomLevel): { from: number, to: number } { + function computeDateRange(iss: Issue[], ms: Milestone[], z: ZoomLevel): { from: number, to: number } { const all: number[] = [] for (const i of iss) { if (i.startDate !== null && i.startDate !== undefined) all.push(i.startDate) @@ -1370,7 +1370,7 @@ let collapsedIds = new Set() let treeExpandStore: TreeExpandStore | null = null let treeExpandUnsub: (() => void) | null = null - function bindTreeExpandStore (projectId: string | undefined): void { + function bindTreeExpandStore(projectId: string | undefined): void { treeExpandUnsub?.() treeExpandUnsub = null if (projectId === undefined || typeof window === 'undefined') { @@ -1388,7 +1388,7 @@ treeExpandUnsub?.() }) - function onToggle (e: CustomEvent<{ id: string }>): void { + function onToggle(e: CustomEvent<{ id: string }>): void { // Group-header rows carry an `id` like "group:". Route // those toggles into `collapsedGroups`, leaving the legacy issue and // milestone collapse state in the persisted tree-expand store. @@ -1407,7 +1407,7 @@ } /** Toolbar "Expand all" — flush every persisted collapsed entry. */ - function expandAllTree (): void { + function expandAllTree(): void { if (treeExpandStore !== null) treeExpandStore.expandAll() else collapsedIds = new Set() } @@ -1417,7 +1417,7 @@ * get re-collapsed (otherwise re-expand would require digging into the * store-state to find ghost ids). */ - function collapseAllTree (): void { + function collapseAllTree(): void { const ids: string[] = [] for (const r of rows) { if (r.collapsible && !r.collapsed) ids.push(r.id) @@ -1536,7 +1536,7 @@ // collapsed or in another group lane still resolves to its number. $: issueIdentifiers = new Map, string>(issues.map((i) => [i._id, i.identifier])) $: statusCategoryMap = buildStatusCategoryMap($statusStore.byId) - function buildStatusCategoryMap (byId: Map): Map { + function buildStatusCategoryMap(byId: Map): Map { const out = new Map() for (const [id, status] of byId.entries()) { out.set(String(id), String(status.category ?? '')) @@ -1548,7 +1548,7 @@ // componentsById is derived above (near milestonesById). $: barColorContextStore.set(buildBarColorContext(issues, statusCategoryMap, componentsById, milestonesById)) - function computeSummaryRanges (layoutRows: LayoutRow[], allIssues: Issue[]): Map { + function computeSummaryRanges(layoutRows: LayoutRow[], allIssues: Issue[]): Map { const result = new Map() const childrenOf = new Map() const issuesByMilestone = new Map() @@ -1607,7 +1607,7 @@ * at most once per minute so a long-lived cycle doesn't flood the * notification tray. */ - function scheduleCpRecompute ( + function scheduleCpRecompute( _issues: Issue[], _relations: IssueRelation[], _show: boolean, @@ -1661,7 +1661,7 @@ // decoupling from the scroll event itself. let vScrollRaf: number | null = null let hScrollRaf: number | null = null - function handleVScroll (e: Event): void { + function handleVScroll(e: Event): void { const t = e.target as HTMLDivElement if (vScrollRaf !== null) return vScrollRaf = requestAnimationFrame(() => { @@ -1670,7 +1670,7 @@ viewportHeight = t.clientHeight }) } - function handleHScroll (e: Event): void { + function handleHScroll(e: Event): void { const t = e.target as HTMLDivElement if (hScrollRaf !== null) return hScrollRaf = requestAnimationFrame(() => { @@ -1680,7 +1680,7 @@ }) } - function onJump (e: CustomEvent<{ x: number }>): void { + function onJump(e: CustomEvent<{ x: number }>): void { if (hScrollEl != null) { hScrollEl.scrollTo({ left: Math.max(0, e.detail.x - 80), behavior: 'smooth' }) // B — see jumpToToday comment; force viewport resync so the @@ -1693,11 +1693,11 @@ if (layoutMode === 'phone') mobileDrawerOpen = false } - function issueCode (i: Issue): string { + function issueCode(i: Issue): string { return (i as unknown as { identifier?: string }).identifier ?? 'Issue' } - function onIssueOpen (e: CustomEvent<{ issue: { _id: string, _class: string } }>): void { + function onIssueOpen(e: CustomEvent<{ issue: { _id: string, _class: string } }>): void { showPanel( tracker.component.EditIssue, e.detail.issue._id as Ref, @@ -1712,13 +1712,13 @@ // MilestoneMarker, so resolve to the full Milestone from the live query // before passing it as the popup's `object` prop (EditMilestone reads // object.label / status / dates synchronously). - function onMilestoneOpen (e: CustomEvent<{ milestoneId: Ref }>): void { + function onMilestoneOpen(e: CustomEvent<{ milestoneId: Ref }>): void { const full = milestones.find((m) => m._id === e.detail.milestoneId) if (full === undefined) return showPopup(EditMilestone, { object: full }, 'middle') } - function newIssue (): void { + function newIssue(): void { if (space === undefined) return showPopup(CreateIssue, { space, shouldSaveDraft: true }, 'top') } @@ -1727,7 +1727,7 @@ // Edit-mode: bar mousedown → reducer; window mousemove/mouseup; commit. // ------------------------------------------------------------------------- - function handleBarMouseDown ( + function handleBarMouseDown( e: CustomEvent<{ target: DragTarget, edge: 'left' | 'right' | 'body', cursorX: number }> ): void { const id = String(e.detail.target.doc._id) @@ -1769,12 +1769,12 @@ // too so the commit loop can iterate members uniformly without // special-casing it. let coDrag: - | { - members: Array<{ issueId: Ref, originStart: number, originEnd: number }> - minDeltaMs: number - maxDeltaMs: number - } - | undefined + | { + members: Array<{ issueId: Ref, originStart: number, originEnd: number }> + minDeltaMs: number + maxDeltaMs: number + } + | undefined if (isBulkBodyDrag) { const memberIssues = issues.filter( (i) => multiSelectedIssueIds.has(i._id) && i.startDate != null && i.dueDate != null @@ -1814,7 +1814,7 @@ ) } - function handleBarClick ( + function handleBarClick( e: CustomEvent<{ target: DragTarget, metaKey: boolean, ctrlKey: boolean, shiftKey: boolean }> ): void { // Pointer-driven canvas panning may still synthesize a click after @@ -1876,7 +1876,7 @@ } } - function handleConnectorDown (e: CustomEvent<{ source: Issue, originPx: { x: number, y: number } }>): void { + function handleConnectorDown(e: CustomEvent<{ source: Issue, originPx: { x: number, y: number } }>): void { activeDrag.update((s) => reduce( s, @@ -1899,11 +1899,11 @@ // capture-phase delegation), all of which fired concurrently and // produced double mousedown handling. Keep this handler the only one. - function handleBarHover (e: CustomEvent<{ issue: Issue | null }>): void { + function handleBarHover(e: CustomEvent<{ issue: Issue | null }>): void { hoveredIssue = e.detail.issue?._id ?? null } - function handleHoverEdge (e: CustomEvent<{ source: Ref, target: Ref } | null>): void { + function handleHoverEdge(e: CustomEvent<{ source: Ref, target: Ref } | null>): void { hoveredEdge = e.detail as { source: Ref, target: Ref } | null } @@ -1914,7 +1914,7 @@ * and scrolls so the row sits 1/3 down from the top of the viewport * (Asana / MS Project pattern — gives breathing room above + below). */ - function handleScrollToRow (e: CustomEvent<{ issue: Ref }>): void { + function handleScrollToRow(e: CustomEvent<{ issue: Ref }>): void { if (scrollerEl == null) return const targetId = String(e.detail.issue) const row = sortedRows.find((r) => r.issue !== null && String(r.issue._id) === targetId) @@ -1929,7 +1929,7 @@ queueMicrotask(syncViewport) } - function handleOpenEditor (e: CustomEvent<{ relation: IssueRelation }>): void { + function handleOpenEditor(e: CustomEvent<{ relation: IssueRelation }>): void { const rel = e.detail.relation // Editability follows the source (predecessor) issue: a relation is // stored on it, so updating the relation is an update of that issue. @@ -1945,7 +1945,7 @@ * canvas background. Bar clicks stopPropagation, so this only fires for * clicks that didn't land on a bar. */ - function onBackgroundClick (e: MouseEvent): void { + function onBackgroundClick(e: MouseEvent): void { const target = e.target as HTMLElement | null if (target?.closest('.bar-wrap') !== null) return selectedIssueId = null @@ -1971,7 +1971,7 @@ * Missing this offset produces an off-by-5 in unscheduled drag drop. */ const RESIZE_CELL_W = 5 - function computeCanvasX (e: MouseEvent): number | undefined { + function computeCanvasX(e: MouseEvent): number | undefined { if (scrollerEl == null) return undefined const rect = scrollerEl.getBoundingClientRect() const sidebarEdge = rect.left + sidebarWidthPx + RESIZE_CELL_W @@ -1979,7 +1979,7 @@ return e.clientX - sidebarEdge + canvasViewportLeft } - function handleCanvasPointerMove (e: MouseEvent): void { + function handleCanvasPointerMove(e: MouseEvent): void { // once a confirmation popup is open the drag preview must // freeze at the position the user released the bar. Without this // gate, every pointermove call into the reducer kept moving the @@ -2017,7 +2017,7 @@ ) } - async function handleCanvasPointerUp (e?: PointerEvent | MouseEvent): Promise { + async function handleCanvasPointerUp(e?: PointerEvent | MouseEvent): Promise { // when a confirmation popup is up the user's click on the // Cancel / Apply button bubbles pointerup to the window. Without this // guard we'd re-enter the commit path while activeDrag is still in @@ -2163,7 +2163,7 @@ } /** True when the preview window is different from the origin window. */ - function previewChangedFromOrigin (state: DragState): boolean { + function previewChangedFromOrigin(state: DragState): boolean { if (state.kind === 'dragging-body' || state.kind === 'dragging-unscheduled') { return state.previewStart !== state.originStart || state.previewEnd !== state.originEnd } @@ -2182,7 +2182,7 @@ * reads `issue.title` (or `issue.label`) and is already tolerant of * either field name — see its component header. */ - async function askConfirm (state: DragState): Promise { + async function askConfirm(state: DragState): Promise { // Narrow to drag/resize states that carry a `target` field. if ( state.kind !== 'dragging-body' && @@ -2247,7 +2247,7 @@ * Commit a drag for an Issue target. Mirrors the shared commit path; the * cascade walks descendant issues (parent → children shift by delta). */ - async function commitIssueDrag ( + async function commitIssueDrag( state: DragState, target: { kind: 'issue', doc: Issue }, ops: ApplyOperations @@ -2294,7 +2294,7 @@ * assigned to it shift by the same delta along with their descendants. * No cascade for resize — only the milestone bounds change. */ - async function commitMilestoneDrag ( + async function commitMilestoneDrag( state: DragState, target: { kind: 'milestone', doc: Milestone }, ops: ApplyOperations @@ -2345,7 +2345,7 @@ // sidebar for them), so that branch is unreachable. } - async function commitWithCascade ( + async function commitWithCascade( primaryEdits: PrimaryEdit[], altKey: boolean, space: Issue['space'], @@ -2596,7 +2596,7 @@ * Build a single undo-entry for a primary+shifts batch. * Returns null when there is nothing to record (zero-issue commit). */ - function buildDateUndoEntry (primary: PrimaryEdit[], shifts: CascadeShift[]): UndoEntry | null { + function buildDateUndoEntry(primary: PrimaryEdit[], shifts: CascadeShift[]): UndoEntry | null { const changes: Array<{ issueId: Ref issueSpace: Ref @@ -2638,7 +2638,7 @@ } } - async function commitCascadeBatch ( + async function commitCascadeBatch( primary: PrimaryEdit[], shifts: CascadeShift[], /** @@ -2685,7 +2685,7 @@ * server). Errors are surfaced as a non-blocking toast so a regression is * visible during smoke-tests but the user can keep working. */ - async function emitDependencyShiftBundles ( + async function emitDependencyShiftBundles( primary: PrimaryEdit[], shifts: CascadeShift[], cascadeToken: string @@ -2711,7 +2711,7 @@ * helpers as the scheduler so violation counts agree with cascade * decisions in both legacy and working-days mode. */ - function relationSatisfied (r: IssueRelation, pe: PrimaryEdit, otherIssue: Issue): boolean { + function relationSatisfied(r: IssueRelation, pe: PrimaryEdit, otherIssue: Issue): boolean { const isOutgoing = String(r.attachedTo) === String(pe.issue._id) const predStart = isOutgoing ? pe.newStart : (otherIssue.startDate as number) const predDue = isOutgoing ? pe.newDue : (otherIssue.dueDate as number) @@ -2730,7 +2730,7 @@ } } - async function commitDrag (state: DragState, event?: PointerEvent | MouseEvent): Promise { + async function commitDrag(state: DragState, event?: PointerEvent | MouseEvent): Promise { // Narrow to drag/resize states that carry a `target` field. if ( state.kind !== 'dragging-body' && @@ -2933,7 +2933,7 @@ void handleCanvasPointerUp(e) } - function attachWindowDragListeners (): void { + function attachWindowDragListeners(): void { window.addEventListener('pointermove', handleCanvasPointerMove) window.addEventListener('pointerup', onWindowPointerUp) window.addEventListener('pointercancel', onWindowPointerUp) @@ -2941,7 +2941,7 @@ window.addEventListener('mouseup', onWindowPointerUp) } - function detachWindowDragListeners (): void { + function detachWindowDragListeners(): void { window.removeEventListener('pointermove', handleCanvasPointerMove) window.removeEventListener('pointerup', onWindowPointerUp) window.removeEventListener('pointercancel', onWindowPointerUp) @@ -2990,7 +2990,7 @@ 'tracker:action:NewSubIssue' ] - function openGanttMenu (event: MouseEvent, issue: Issue): void { + function openGanttMenu(event: MouseEvent, issue: Issue): void { const anchor = getEventPositionElement(event) const editable = editableIssueIds.has(String(issue._id)) const extra = editable ? ganttExtraActions(issue, anchor) : [] @@ -3002,11 +3002,11 @@ }) } - function handleBarContextMenu (e: CustomEvent<{ issue: Issue, event: MouseEvent }>): void { + function handleBarContextMenu(e: CustomEvent<{ issue: Issue, event: MouseEvent }>): void { openGanttMenu(e.detail.event, e.detail.issue) } - function handleRowDragStart (e: CustomEvent<{ issue: Issue, cursorX: number }>): void { + function handleRowDragStart(e: CustomEvent<{ issue: Issue, cursorX: number }>): void { // Ready-gate: dropping an unscheduled issue writes dates — blocked // until the calendar is initially loaded. if (!calendarMutable) return @@ -3024,7 +3024,7 @@ ) } - function handleRowContextMenu (e: CustomEvent<{ issue: { _id: string, _class: string }, event: MouseEvent }>): void { + function handleRowContextMenu(e: CustomEvent<{ issue: { _id: string, _class: string }, event: MouseEvent }>): void { const found = issues.find((i) => String(i._id) === e.detail.issue._id) if (found === undefined) return openGanttMenu(e.detail.event, found) @@ -3039,7 +3039,7 @@ $: scheduledIssues = issues.filter((i) => i.startDate != null && i.dueDate != null) - function moveFocus (dir: 1 | -1): void { + function moveFocus(dir: 1 | -1): void { if (scheduledIssues.length === 0) return const ids = scheduledIssues.map((i) => String(i._id)) const cur = focusedIssueId !== null ? ids.indexOf(focusedIssueId) : -1 @@ -3047,7 +3047,7 @@ focusedIssueId = ids[nextIdx] } - async function shiftFocused (days: number): Promise { + async function shiftFocused(days: number): Promise { // Ready-gate: keyboard shifts run the cascade scheduler — blocked until // the calendar is initially loaded. if (!calendarMutable) return @@ -3095,17 +3095,17 @@ * toasts; on success flashes the affected bars for 1.5 s so the user sees * what just reverted. */ - async function handleUndo (): Promise { + async function handleUndo(): Promise { const r: UndoResult = await undoManager.undo() await showUndoResultToast(r) } - async function handleRedo (): Promise { + async function handleRedo(): Promise { const r: UndoResult = await undoManager.redo() await showUndoResultToast(r) } - async function showUndoResultToast (r: UndoResult): Promise { + async function showUndoResultToast(r: UndoResult): Promise { if (r.kind === 'success') { if (r.affectedIds.length > 0) flashIssues(r.affectedIds, 1500, undoFlashStore) return @@ -3142,7 +3142,7 @@ * is the browser's native text-undo and we must NOT hijack it. Otherwise * the Gantt is the consumer. */ - function isTextInputFocused (): boolean { + function isTextInputFocused(): boolean { const el = document.activeElement if (el === null) return false if (el instanceof HTMLInputElement) return el.type !== 'checkbox' && el.type !== 'radio' && el.type !== 'button' @@ -3151,7 +3151,7 @@ return el.getAttribute('contenteditable') === 'true' } - function onKey (e: KeyboardEvent): void { + function onKey(e: KeyboardEvent): void { // Cmd+Z / Ctrl+Z (Undo) and Cmd+Shift+Z / Ctrl+Shift+Z (Redo). // Checked FIRST so they win against the Phase-1 zoom/pan shortcuts which // share the +/-/Tab/Arrow keyspace. Skip when a text input owns focus so @@ -3292,7 +3292,7 @@ // event. } - function cycleZoom (delta: number): void { + function cycleZoom(delta: number): void { const levels: ZoomLevel[] = ['day', 'week', 'month', 'quarter'] const idx = levels.indexOf(zoom) const next = levels[Math.min(levels.length - 1, Math.max(0, idx + delta))] @@ -3303,7 +3303,7 @@ // zoom with cursor-anchored scroll. Without Ctrl we let the wheel pass // through to the native scroller (vertical scroll / shift-wheel // horizontal). All math lives in lib/zoom.ts for unit-testability. - function onScrollerWheel (e: WheelEvent): void { + function onScrollerWheel(e: WheelEvent): void { if (!(e.ctrlKey || e.metaKey)) return // preventDefault FIRST (before any other early-return) so hitting // MIN_PPD / MAX_PPD limits or a missing hScrollEl never lets the @@ -3350,7 +3350,7 @@ // math reuses cursorAnchoredScrollLeft from the Ctrl+Wheel zoom path so // the visual outcome is consistent between desktop wheel-zoom and // tablet pinch-zoom. - function onScrollerPointerDown (e: PointerEvent): void { + function onScrollerPointerDown(e: PointerEvent): void { if (e.pointerType !== 'touch') return if (scrollerEl == null) return const rect = scrollerEl.getBoundingClientRect() @@ -3363,7 +3363,7 @@ }) } - function onScrollerPointerMove (e: PointerEvent): void { + function onScrollerPointerMove(e: PointerEvent): void { if (e.pointerType !== 'touch') return if (pinchState.kind === 'idle') return if (scrollerEl == null) return @@ -3400,19 +3400,19 @@ }) } - function onScrollerPointerUp (e: PointerEvent): void { + function onScrollerPointerUp(e: PointerEvent): void { if (e.pointerType !== 'touch') return pinchState = reducePinch(pinchState, { type: 'up', id: e.pointerId }) } - function onScrollerPointerCancel (_e: PointerEvent): void { + function onScrollerPointerCancel(_e: PointerEvent): void { // iOS Safari fires pointercancel when scroll-inertia kicks in. Drop // the pinch cleanly so a follow-up pointerdown doesn't see a stale // half-tracked state. pinchState = reducePinch(pinchState, { type: 'cancel' }) } - async function exportToPng (): Promise { + async function exportToPng(): Promise { const stamp = `gantt-${new Date().toISOString().slice(0, 10)}` try { await exportGanttDataToPng( @@ -3433,7 +3433,7 @@ } } - async function exportToPdf (): Promise { + async function exportToPdf(): Promise { try { await exportGanttDataToPdf( { @@ -3469,7 +3469,7 @@ // rendered subtree. The toolbar/workbench chrome that briefly shows // is acceptable; the previous behaviour of "invisible popup forces // exit-fullscreen" was strictly worse for the user. - function toggleFullscreen (): void { + function toggleFullscreen(): void { if (document.fullscreenElement != null) { void document.exitFullscreen().catch(() => {}) return @@ -3483,7 +3483,7 @@ // window resize. matchMedia would suffice, but resize covers // orientation-change on tablets too without listing every breakpoint // twice. - function onWindowResize (): void { + function onWindowResize(): void { const next = detectLayoutMode(window.innerWidth) if (next !== layoutMode) { layoutMode = next @@ -3516,28 +3516,28 @@ // hThumbLeft) stay stale until the next pointermove. The explicit // queueMicrotask path keeps `canvasViewportLeft` and dependant reactive // expressions (including classifyArrowVisibility) in sync. - function jumpToToday (): void { + function jumpToToday(): void { if (hScrollEl == null) return const x = timeScale.toX(Date.now()) hScrollEl.scrollTo({ left: Math.max(0, x - canvasViewportWidth / 2), behavior: 'smooth' }) queueMicrotask(syncViewport) } - function pageScroll (dir: -1 | 1): void { + function pageScroll(dir: -1 | 1): void { if (hScrollEl == null) return hScrollEl.scrollBy({ left: dir * canvasViewportWidth * 0.8, behavior: 'smooth' }) queueMicrotask(syncViewport) } - function jumpToStart (): void { + function jumpToStart(): void { if (hScrollEl == null) return hScrollEl.scrollTo({ left: 0, behavior: 'smooth' }) queueMicrotask(syncViewport) } - function jumpToEnd (): void { + function jumpToEnd(): void { if (hScrollEl == null) return hScrollEl.scrollTo({ left: hScrollEl.scrollWidth, behavior: 'smooth' }) queueMicrotask(syncViewport) } - function jumpToDate (iso: string): void { + function jumpToDate(iso: string): void { if (hScrollEl == null || iso === '') return const t = Date.parse(iso) if (isNaN(t)) return @@ -3547,7 +3547,7 @@ } let datePickerValue: string = '' - function formatRange (ms: number): string { + function formatRange(ms: number): string { return new Date(ms).toLocaleDateString(undefined, { month: 'short', year: 'numeric' }) } @@ -3573,7 +3573,7 @@ let dragVThumb = false let dragVThumbStartY = 0 let dragVThumbStartScroll = 0 - function onVThumbDragStart (e: PointerEvent): void { + function onVThumbDragStart(e: PointerEvent): void { e.stopPropagation() e.preventDefault() if (scrollerEl == null) return @@ -3582,13 +3582,13 @@ dragVThumbStartScroll = scrollerEl.scrollTop ;(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId) } - function onVThumbDragMove (e: PointerEvent): void { + function onVThumbDragMove(e: PointerEvent): void { if (!dragVThumb || scrollerEl == null) return const dy = e.clientY - dragVThumbStartY const ratio = vThumbMax > 0 ? dy / vThumbMax : 0 scrollerEl.scrollTop = dragVThumbStartScroll + ratio * vScrollMax } - function onVThumbDragEnd (e: PointerEvent): void { + function onVThumbDragEnd(e: PointerEvent): void { if (!dragVThumb) return dragVThumb = false ;(e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId) @@ -3597,7 +3597,7 @@ let dragThumb = false let dragThumbStartX = 0 let dragThumbStartScroll = 0 - function onThumbDragStart (e: PointerEvent): void { + function onThumbDragStart(e: PointerEvent): void { e.stopPropagation() e.preventDefault() if (hScrollEl == null) return @@ -3606,18 +3606,18 @@ dragThumbStartScroll = hScrollEl.scrollLeft ;(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId) } - function onThumbDragMove (e: PointerEvent): void { + function onThumbDragMove(e: PointerEvent): void { if (!dragThumb || hScrollEl == null) return const dx = e.clientX - dragThumbStartX const ratio = hThumbMax > 0 ? dx / hThumbMax : 0 hScrollEl.scrollLeft = dragThumbStartScroll + ratio * hScrollMax } - function onThumbDragEnd (e: PointerEvent): void { + function onThumbDragEnd(e: PointerEvent): void { if (!dragThumb) return dragThumb = false ;(e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId) } - function onProxyTrackClick (e: PointerEvent): void { + function onProxyTrackClick(e: PointerEvent): void { // Click on track (not thumb): page-scroll towards click position. if ((e.target as HTMLElement).classList.contains('hscroll-thumb')) return if (hScrollEl == null) return @@ -3639,7 +3639,7 @@ let panStartY = 0 let panStartScrollLeft = 0 let panStartScrollTop = 0 - function onCanvasPanStart (e: PointerEvent): void { + function onCanvasPanStart(e: PointerEvent): void { if (scrollerEl == null || hScrollEl == null) return const target = e.target as HTMLElement if (!shouldStartCanvasPan(target)) return @@ -3649,7 +3649,7 @@ panStartScrollLeft = hScrollEl.scrollLeft panStartScrollTop = scrollerEl.scrollTop } - function onCanvasPanMove (e: PointerEvent): void { + function onCanvasPanMove(e: PointerEvent): void { if ((!pendingPan && !panning) || scrollerEl == null || hScrollEl == null) return const dx = e.clientX - panStartX const dy = e.clientY - panStartY @@ -3662,7 +3662,7 @@ hScrollEl.scrollLeft = panStartScrollLeft - (e.clientX - panStartX) scrollerEl.scrollTop = panStartScrollTop - (e.clientY - panStartY) } - function onCanvasPanEnd (e: PointerEvent): void { + function onCanvasPanEnd(e: PointerEvent): void { // Guard: only release the pointer if we actually captured it. A pointerup // bubbling from a child element that was excluded by the pan-handler // exclusion list (e.g. resize-handle, drag-grip) shouldn't reach @@ -3689,7 +3689,7 @@ let resizeStartX = 0 let resizeStartWidth = 0 let resizeStartColumnWidths: Record = {} - function onResizeStart (e: PointerEvent): void { + function onResizeStart(e: PointerEvent): void { e.stopPropagation() e.preventDefault() resizing = true @@ -3700,7 +3700,7 @@ } ;(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId) } - function onResizeMove (e: PointerEvent): void { + function onResizeMove(e: PointerEvent): void { if (!resizing) return e.stopPropagation() const delta = e.clientX - resizeStartX @@ -3721,7 +3721,7 @@ userSidebarWidth = Math.max(MIN_SIDEBAR_WIDTH, Math.min(MAX_SIDEBAR_WIDTH, next)) } } - function onResizeEnd (e: PointerEvent): void { + function onResizeEnd(e: PointerEvent): void { if (!resizing) return e.stopPropagation() resizing = false @@ -3737,7 +3737,7 @@ let resizeObs: ResizeObserver | undefined let observedScrollerEl: HTMLDivElement | null = null let observedHScrollEl: HTMLDivElement | null = null - function syncViewport (): void { + function syncViewport(): void { if (scrollerEl != null) { scrollTop = scrollerEl.scrollTop viewportHeight = scrollerEl.clientHeight @@ -3839,13 +3839,13 @@ // `showCriticalPath`, in both paths. return cols.filter((c) => (c !== 'slack' || showSlackColumn) && (c !== 'predecessors' || showPredecessors)) })() - function onSidebarSort (evt: CustomEvent<{ column: SidebarColumnKey }>): void { + function onSidebarSort(evt: CustomEvent<{ column: SidebarColumnKey }>): void { const next = cycleSort(sidebarSort, evt.detail.column) sidebarSort = next persistViewOption('ganttSidebarSort', next) } - function onSidebarWidthChange (evt: CustomEvent<{ column: SidebarColumnKey, width: number, commit: boolean }>): void { + function onSidebarWidthChange(evt: CustomEvent<{ column: SidebarColumnKey, width: number, commit: boolean }>): void { const next = { ...sidebarWidths, [evt.detail.column]: clampWidth(evt.detail.width) } sidebarWidths = next // Only write on `commit` (end-of-drag). Persisting every pointermove diff --git a/plugins/tracker-resources/src/components/gantt/StatusBadge.svelte b/plugins/tracker-resources/src/components/gantt/StatusBadge.svelte index 241273fe0f..089b0f5905 100644 --- a/plugins/tracker-resources/src/components/gantt/StatusBadge.svelte +++ b/plugins/tracker-resources/src/components/gantt/StatusBadge.svelte @@ -12,7 +12,7 @@ $: statusName = (status as { name?: string } | undefined)?.name ?? '' $: color = mapColor(category) - function mapColor (cat: string | undefined): string { + function mapColor(cat: string | undefined): string { switch (cat) { case 'task:statusCategory:UnStarted': case 'tracker:statusCategory:Backlog': diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/bar-labels.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/bar-labels.test.ts index 30f7a017f1..5110c8fb34 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/bar-labels.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/bar-labels.test.ts @@ -6,7 +6,7 @@ import type { Issue } from '@hcengineering/tracker' import type { Ref } from '@hcengineering/core' import { resolveBarLabel, type BarLabelSlot } from '../bar-labels' -function makeIssue (overrides: Partial = {}): Issue { +function makeIssue(overrides: Partial = {}): Issue { return { _id: 'iss-1' as Ref, _class: 'tracker:class:Issue', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/build-rows.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/build-rows.test.ts index c610aee168..2376a555a0 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/build-rows.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/build-rows.test.ts @@ -8,7 +8,7 @@ import { GROUP_HEADER_HEIGHT, buildGroupedRows, groupRowsToLayoutRows, type Gant const ROW_HEIGHT = 32 -function makeIssue (id: string, over: Partial = {}): Issue { +function makeIssue(id: string, over: Partial = {}): Issue { return { _id: id, _class: 'tracker:class:Issue', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/bulk-boundary.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/bulk-boundary.test.ts index f3a56e4019..8159b198e1 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/bulk-boundary.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/bulk-boundary.test.ts @@ -9,7 +9,7 @@ import { computeBulkDeltaBounds } from '../bulk-boundary' const DAY_MS = 86_400_000 -function issue (id: string, start?: number, due?: number): Issue { +function issue(id: string, start?: number, due?: number): Issue { return { _id: id as Ref, _class: 'tracker:class:Issue' as any, @@ -24,7 +24,7 @@ function issue (id: string, start?: number, due?: number): Issue { } as unknown as Issue } -function rel ( +function rel( source: string, target: string, kind: 'finish-to-start' | 'start-to-start' | 'finish-to-finish' | 'start-to-finish' = 'finish-to-start', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/calendar-state.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/calendar-state.test.ts index 2e2db1130f..85e1beeaac 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/calendar-state.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/calendar-state.test.ts @@ -53,13 +53,13 @@ class FakeQuery implements LiveQueryLike { this.current = null // clears the comparison state — re-arms identical queries } - get lastCallback (): ((res: any[]) => void) | null { + get lastCallback(): ((res: any[]) => void) | null { return this.current?.callback ?? null } // Delivery as in the original: queued, never synchronous. `await respond(…)` // returns only after the callback has run. - async respond (res: any[]): Promise { + async respond(res: any[]): Promise { const cb = this.current?.callback if (cb === undefined) throw new Error('no active subscription') await Promise.resolve() @@ -76,7 +76,7 @@ interface Rig { switchCount: () => number } -function build (hrModelPresent = true): Rig { +function build(hrModelPresent = true): Rig { const project = new FakeQuery() const departments = new FakeQuery() const holidays = new FakeQuery() @@ -207,7 +207,7 @@ describe('load sequencing', () => { }) describe('project switch', () => { - async function readyOnP1 (): Promise { + async function readyOnP1(): Promise { const r = build() r.machine.setSpace(sp('p1')) await r.project.respond(proj(CFG_TEAM)) @@ -295,7 +295,7 @@ describe('fake faithfulness (LiveQuery dedupe contract)', () => { }) describe('mutation tickets (generation guard)', () => { - async function readyLegacy (id: string): Promise { + async function readyLegacy(id: string): Promise { const r = build() r.machine.setSpace(sp(id)) await r.project.respond(proj(undefined)) diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/critical-path.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/critical-path.test.ts index d424b2d151..c51c97354a 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/critical-path.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/critical-path.test.ts @@ -7,7 +7,7 @@ import { computeCriticalPath } from '../critical-path' import type { Issue, IssueRelation } from '@hcengineering/tracker' import type { Ref } from '@hcengineering/core' -function issue (id: string, start?: number, due?: number): Issue { +function issue(id: string, start?: number, due?: number): Issue { return { _id: id as Ref, _class: 'tracker:class:Issue' as any, @@ -22,7 +22,7 @@ function issue (id: string, start?: number, due?: number): Issue { } as unknown as Issue } -function rel ( +function rel( source: string, target: string, kind: 'finish-to-start' | 'start-to-start' | 'finish-to-finish' | 'start-to-finish' = 'finish-to-start', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/deadline-marker.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/deadline-marker.test.ts index 061b7eb5bb..0dae1cf40f 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/deadline-marker.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/deadline-marker.test.ts @@ -6,7 +6,7 @@ import type { Issue } from '@hcengineering/tracker' import type { Ref } from '@hcengineering/core' import { isOverdue, hasDeadline } from '../deadline-marker' -function makeIssue (deadline: number | null | undefined, dueDate: number | null = null): Issue { +function makeIssue(deadline: number | null | undefined, dueDate: number | null = null): Issue { return { _id: 'i' as Ref, deadline, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-router.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-router.test.ts index 3d7e28cd1a..6ca89891fa 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-router.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-router.test.ts @@ -94,7 +94,7 @@ describe('arrowheadPoints', () => { }) }) -function mkRel (from: string, to: string): IssueRelation { +function mkRel(from: string, to: string): IssueRelation { return { _id: `${from}->${to}` as Ref, attachedTo: from as Ref, @@ -236,7 +236,7 @@ describe('clippedEndpointPx', () => { describe('bezierHitPath', () => { /** Parse `M x y C c1x c1y, c2x c2y, x2 y2` back into numbers. */ - function parse (d: string): number[] { + function parse(d: string): number[] { const nums = d.match(/-?\d+(?:\.\d+)?/g) expect(nums).not.toBeNull() return (nums as string[]).map(Number) diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-shift-notify.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-shift-notify.test.ts index 36063b5330..c0c670c7c0 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-shift-notify.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-shift-notify.test.ts @@ -13,7 +13,7 @@ import { } from '../dependency-shift-notify' import type { CascadeShift, PrimaryEdit } from '../types' -function issue (id: string, identifier: string, title: string, start: number | null, due: number | null): Issue { +function issue(id: string, identifier: string, title: string, start: number | null, due: number | null): Issue { return { _id: id as Ref, _class: 'tracker:class:Issue' as any, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-shift-send.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-shift-send.test.ts index 8c7813c073..2d45bdd7a3 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-shift-send.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/dependency-shift-send.test.ts @@ -17,7 +17,7 @@ import type { CascadeShift, PrimaryEdit } from '../types' // not here. These tests assert only the client contract: build payloads → one // createDoc → return 1, and fail-soft error handling. -function issue (id: string, identifier: string, title: string, start: number | null, due: number | null): Issue { +function issue(id: string, identifier: string, title: string, start: number | null, due: number | null): Issue { return { _id: id as Ref, _class: 'tracker:class:Issue' as any, @@ -48,10 +48,10 @@ const SHIFT: CascadeShift = { triggeredBy: TRIGGER_ISSUE._id } -function makeClient ( +function makeClient( createImpl?: () => Promise, hasClass: boolean = true -): { client: TxOperations, createDoc: jest.Mock, hasClassMock: jest.Mock } { +): { client: TxOperations; createDoc: jest.Mock; hasClassMock: jest.Mock } { const createDoc = jest.fn(createImpl ?? (async () => 'newId' as any)) // The emitter guards on the workspace model knowing the request class, so // the fake client has to expose a hierarchy just like the real one. @@ -63,7 +63,7 @@ function makeClient ( } } -function args (primaries: PrimaryEdit[] = [], shifts: CascadeShift[] = []): DependencyShiftSendArgs { +function args(primaries: PrimaryEdit[] = [], shifts: CascadeShift[] = []): DependencyShiftSendArgs { return { triggerIssue: TRIGGER_ISSUE, triggerUser: 'acc-trigger' as any, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/export-renderer.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/export-renderer.test.ts index 877bad2cd9..0bef341eee 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/export-renderer.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/export-renderer.test.ts @@ -12,7 +12,7 @@ import type { LayoutRow } from '../types' const DAY = 86_400_000 const start = Date.UTC(2026, 0, 5) -function issue (id: string, identifier: string, title: string, offset: number): Issue { +function issue(id: string, identifier: string, title: string, offset: number): Issue { return { _id: id as Ref, identifier, @@ -24,7 +24,7 @@ function issue (id: string, identifier: string, title: string, offset: number): } as unknown as Issue } -function row (i: Issue, y: number): LayoutRow { +function row(i: Issue, y: number): LayoutRow { return { kind: 'issue', id: `issue:${String(i._id)}`, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/group-by.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/group-by.test.ts index c945cfc26a..84a69a0b0e 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/group-by.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/group-by.test.ts @@ -18,7 +18,7 @@ import { type GroupByKey } from '../group-by' -function makeIssue (over: Partial): Issue { +function makeIssue(over: Partial): Issue { return { _id: 'i1', _class: 'tracker:class:Issue', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/hr-holidays.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/hr-holidays.test.ts index 968debdf32..f9d814e51b 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/hr-holidays.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/hr-holidays.test.ts @@ -12,16 +12,16 @@ import { resolveHolidayScope, resolveHrHolidays, tzDateToUtcMidnight } from '../ const head = 'head' as Ref // Only `_id` and `parent` matter to the scope walk — fabricate minimal docs. -function dept (id: string, parent?: string): Department { +function dept(id: string, parent?: string): Department { return { _id: id, parent } as unknown as Department } -function deptMap (...docs: Department[]): Map, Department> { +function deptMap(...docs: Department[]): Map, Department> { return new Map(docs.map((d) => [d._id, d])) } // Only `date` and `department` matter to the resolver. -function holiday (year: number, month: number, day: number, department: string): PublicHoliday { +function holiday(year: number, month: number, day: number, department: string): PublicHoliday { return { date: { year, month, day, offset: 0 }, department } as unknown as PublicHoliday } diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/layout.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/layout.test.ts index 036b5e0430..be1d7c394f 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/layout.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/layout.test.ts @@ -7,7 +7,7 @@ import type { Issue } from '@hcengineering/tracker' import { buildLayout, filterVisibleRows } from '../layout' import { type LayoutRow, type MilestoneMarker } from '../types' -function fakeIssue (id: string, parentId?: string, hasChildren = false, milestone?: string): Issue { +function fakeIssue(id: string, parentId?: string, hasChildren = false, milestone?: string): Issue { return { _id: id as any, _class: 'tracker:class:Issue' as any, @@ -30,7 +30,7 @@ function fakeIssue (id: string, parentId?: string, hasChildren = false, mileston } as unknown as Issue } -function fakeMilestone (id: string, label = `MS ${id}`): MilestoneMarker { +function fakeMilestone(id: string, label = `MS ${id}`): MilestoneMarker { return { _id: id as any, label, startDate: null, targetDate: 1_700_000_000_000 } } @@ -314,7 +314,7 @@ describe('buildLayout — combined breadcrumb + sort + collapse', () => { }) describe('filterVisibleRows', () => { - function row (y: number): LayoutRow { + function row(y: number): LayoutRow { return { kind: 'issue', id: `r-${y}`, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/link-sub-issue-cycle.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/link-sub-issue-cycle.test.ts index 4b4c68adbb..fef202f30f 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/link-sub-issue-cycle.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/link-sub-issue-cycle.test.ts @@ -17,7 +17,7 @@ import type { Issue } from '@hcengineering/tracker' import type { Ref } from '@hcengineering/core' -function computeIgnoreSet (root: Issue, all: Issue[]): Set> { +function computeIgnoreSet(root: Issue, all: Issue[]): Set> { const ignored = new Set>([root._id]) if (Array.isArray(root.parents)) { for (const p of root.parents as Array<{ parentId: Ref }>) { @@ -45,7 +45,7 @@ function computeIgnoreSet (root: Issue, all: Issue[]): Set> { return ignored } -function mk (id: string, parents: string[] = []): Issue { +function mk(id: string, parents: string[] = []): Issue { return { _id: id as Ref, parents: parents.map((p) => ({ parentId: p as Ref, parentTitle: '', space: 'sp' })) diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/menu-actions.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/menu-actions.test.ts index ec705869ca..de15af1676 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/menu-actions.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/menu-actions.test.ts @@ -64,7 +64,7 @@ jest.mock( { virtual: true } ) -function makeIssue (overrides: Partial = {}): Issue { +function makeIssue(overrides: Partial = {}): Issue { return { _id: 'iss-1' as Ref, _class: 'tracker:class:Issue' as any, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/predecessor-format.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/predecessor-format.test.ts index bddb954b12..af6a118dd2 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/predecessor-format.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/predecessor-format.test.ts @@ -8,7 +8,7 @@ import type { Ref } from '@hcengineering/core' import { kindCode, kindFromCode, signedLag, formatPredecessors, resolveIssueNumber } from '../predecessor-format' import type { LayoutRow } from '../types' -function mkRel (from: string, to: string, kind: DependencyKind, lag: number): IssueRelation { +function mkRel(from: string, to: string, kind: DependencyKind, lag: number): IssueRelation { return { _id: `${from}->${to}` as Ref, attachedTo: from as Ref, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/predecessor-list-format.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/predecessor-list-format.test.ts index f718841a0e..08577448a7 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/predecessor-list-format.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/predecessor-list-format.test.ts @@ -12,7 +12,7 @@ import { type PredecessorEntry } from '../predecessor-list-format' -function mkRel (from: string, to: string, kind: DependencyKind, lag: number): IssueRelation { +function mkRel(from: string, to: string, kind: DependencyKind, lag: number): IssueRelation { return { _id: `${from}->${to}-${kind}` as Ref, attachedTo: from as Ref, @@ -23,7 +23,7 @@ function mkRel (from: string, to: string, kind: DependencyKind, lag: number): Is } as unknown as IssueRelation } -function mkIssue (id: string, identifier: string): Issue { +function mkIssue(id: string, identifier: string): Issue { return { _id: id as Ref, identifier @@ -103,7 +103,7 @@ describe('sortPredecessorsByIdentifier', () => { }) describe('splitFirstAndRest', () => { - function mkEntry (identifier: string): PredecessorEntry { + function mkEntry(identifier: string): PredecessorEntry { return { rel: mkRel('a', 'b', 'finish-to-start', 0), source: mkIssue('a', identifier) diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/relation-activity.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/relation-activity.test.ts index a57886106a..71a2286d6d 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/relation-activity.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/relation-activity.test.ts @@ -14,7 +14,7 @@ import { const ISSUE_CLASS = 'tracker:class:Issue' as Ref> const RELATION_CLASS = 'tracker:class:IssueRelation' as Ref> -function dum (partial: Partial = {}): RelationDum { +function dum(partial: Partial = {}): RelationDum { return { _id: 'd1' as Ref, objectId: 'r1' as Ref, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/saved-views.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/saved-views.test.ts index 4585972d69..b6effc31fd 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/saved-views.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/saved-views.test.ts @@ -10,7 +10,7 @@ const GANTT = 'gantt-id' as Ref const LIST = 'list-id' as Ref const ME = 'me-uuid' -function fv (over: Partial): FilteredView { +function fv(over: Partial): FilteredView { return { _id: 'fv1', _class: 'fv-class', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-auto-manual.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-auto-manual.test.ts index 9bac982e3f..2c6944cdcf 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-auto-manual.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-auto-manual.test.ts @@ -9,7 +9,7 @@ import type { Issue, IssueRelation } from '@hcengineering/tracker' import type { Ref } from '@hcengineering/core' import type { PrimaryEdit } from '../types' -function issue ( +function issue( id: string, start?: number, due?: number, @@ -31,7 +31,7 @@ function issue ( } as unknown as Issue } -function rel ( +function rel( source: string, target: string, kind: 'finish-to-start' | 'start-to-start' | 'finish-to-finish' | 'start-to-finish' = 'finish-to-start', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-bulk.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-bulk.test.ts index 063cec3395..44a72bacbe 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-bulk.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-bulk.test.ts @@ -8,7 +8,7 @@ import type { Issue, IssueRelation } from '@hcengineering/tracker' import type { Ref } from '@hcengineering/core' import type { PrimaryEdit } from '../types' -function issue (id: string, start?: number, due?: number, schedulingMode?: 'auto' | 'manual'): Issue { +function issue(id: string, start?: number, due?: number, schedulingMode?: 'auto' | 'manual'): Issue { return { _id: id as Ref, _class: 'tracker:class:Issue' as any, @@ -24,7 +24,7 @@ function issue (id: string, start?: number, due?: number, schedulingMode?: 'auto } as unknown as Issue } -function rel ( +function rel( source: string, target: string, kind: 'finish-to-start' | 'start-to-start' | 'finish-to-finish' | 'start-to-finish' = 'finish-to-start', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-cascade.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-cascade.test.ts index 20fa743dbe..21b622654d 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-cascade.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler-cascade.test.ts @@ -9,7 +9,7 @@ import type { Issue, IssueRelation } from '@hcengineering/tracker' import type { Ref } from '@hcengineering/core' import type { PrimaryEdit } from '../types' -function issue (id: string, start?: number, due?: number): Issue { +function issue(id: string, start?: number, due?: number): Issue { return { _id: id as Ref, _class: 'tracker:class:Issue' as any, @@ -24,7 +24,7 @@ function issue (id: string, start?: number, due?: number): Issue { } as unknown as Issue } -function rel ( +function rel( source: string, target: string, kind: 'finish-to-start' | 'start-to-start' | 'finish-to-finish' | 'start-to-finish' = 'finish-to-start', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler.test.ts index a2e0b9b471..2742d3bad5 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/scheduler.test.ts @@ -13,7 +13,7 @@ import { descendantsWithDates, wouldCreateCycle } from '../scheduler' * direct parent. layout.ts:52 + GanttView.svelte:192 both use this * pattern, so the scheduler walks the same edge. */ -function mkIssue (id: string, parent: string | null, startDate: number | null, dueDate: number | null): Issue { +function mkIssue(id: string, parent: string | null, startDate: number | null, dueDate: number | null): Issue { return { _id: id as Ref, parents: parent !== null ? [{ parentId: parent as Ref, parentTitle: '', space: 'sp' }] : [], @@ -89,7 +89,7 @@ describe('descendantsWithDates', () => { }) }) -function mkRel (from: string, to: string, kind: DependencyKind = 'finish-to-start'): IssueRelation { +function mkRel(from: string, to: string, kind: DependencyKind = 'finish-to-start'): IssueRelation { return { _id: `${from}->${to}` as Ref, attachedTo: from as Ref, diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/sidebar-sort.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/sidebar-sort.test.ts index 11649c4c94..488373dc56 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/sidebar-sort.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/sidebar-sort.test.ts @@ -20,7 +20,7 @@ interface IssueOverrides { createdOn?: number } -function mkIssue (overrides: IssueOverrides): Issue { +function mkIssue(overrides: IssueOverrides): Issue { return { _id: overrides._id as Ref, title: overrides.title ?? '', diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/undo-manager.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/undo-manager.test.ts index c1d4afa032..b9e06eb9db 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/undo-manager.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/undo-manager.test.ts @@ -9,7 +9,7 @@ import { UndoManager, type UndoEntry, type UndoApplyClient } from '../undo-manag const space = 'space-1' as Ref -function makeIssue (id: string, startDate: number | null, dueDate: number | null): Issue { +function makeIssue(id: string, startDate: number | null, dueDate: number | null): Issue { return { _id: id as Ref, _class: 'tracker:class:Issue' as Issue['_class'], @@ -19,7 +19,7 @@ function makeIssue (id: string, startDate: number | null, dueDate: number | null } as unknown as Issue } -function makeRelation ( +function makeRelation( id: string, from: string, to: string, @@ -39,7 +39,7 @@ function makeRelation ( } as unknown as IssueRelation } -function dateChange ( +function dateChange( id: string, beforeStart: number, beforeDue: number, @@ -57,7 +57,7 @@ function dateChange ( } interface MockOps { - updates: Array<{ doc: { _id: string }, update: Record }> + updates: Array<{ doc: { _id: string }; update: Record }> added: Array<{ _class: string space: string @@ -67,7 +67,7 @@ interface MockOps { attributes: Record id?: string }> - removed: Array<{ _class: string, space: string, id: string }> + removed: Array<{ _class: string; space: string; id: string }> removeDocCount: number } @@ -80,7 +80,7 @@ interface MockClient extends UndoApplyClient { } } -function makeClient (initial: { issues?: Issue[], relations?: IssueRelation[] } = {}): MockClient { +function makeClient(initial: { issues?: Issue[]; relations?: IssueRelation[] } = {}): MockClient { const issues = new Map() const relations = new Map() for (const i of initial.issues ?? []) issues.set(String(i._id), i) @@ -89,20 +89,20 @@ function makeClient (initial: { issues?: Issue[], relations?: IssueRelation[] } const client: MockClient = { state: { issues, relations, mockOps }, - async findOne (clazz: unknown, query: { _id: unknown }) { + async findOne(clazz: unknown, query: { _id: unknown }) { const id = String(query._id) // pick from the right map by stringified class const c = String(clazz) if (c.includes('IssueRelation')) return relations.get(id) as unknown as never return issues.get(id) as unknown as never }, - async findAll (_clazz: unknown, _query: unknown) { + async findAll(_clazz: unknown, _query: unknown) { return Array.from(relations.values()) as unknown as never }, - apply (_marker: string | undefined) { + apply(_marker: string | undefined) { const pending: Array<() => void> = [] return { - async update (doc: { _id: string, _class?: string }, update: Record) { + async update(doc: { _id: string; _class?: string }, update: Record) { mockOps.updates.push({ doc: { _id: String(doc._id) }, update }) pending.push(() => { const cur = issues.get(String(doc._id)) @@ -117,7 +117,7 @@ function makeClient (initial: { issues?: Issue[], relations?: IssueRelation[] } }) return undefined }, - async addCollection ( + async addCollection( clazz: string, spc: string, attachedTo: string, @@ -141,7 +141,7 @@ function makeClient (initial: { issues?: Issue[], relations?: IssueRelation[] } }) return newId }, - async removeCollection ( + async removeCollection( clazz: string, spc: string, id: string, @@ -155,7 +155,7 @@ function makeClient (initial: { issues?: Issue[], relations?: IssueRelation[] } }) return undefined }, - async commit () { + async commit() { if (client.state.failNextCommit === true) { client.state.failNextCommit = false throw new Error('mock-commit-fail') diff --git a/plugins/tracker-resources/src/components/gantt/lib/__tests__/working-days-editor.test.ts b/plugins/tracker-resources/src/components/gantt/lib/__tests__/working-days-editor.test.ts index e9f86adb18..0bd0515e95 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/__tests__/working-days-editor.test.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/__tests__/working-days-editor.test.ts @@ -18,7 +18,7 @@ import { const head = 'head' as Ref -function dept (id: string, name: string): Department { +function dept(id: string, name: string): Department { return { _id: id, name } as unknown as Department } diff --git a/plugins/tracker-resources/src/components/gantt/lib/bar-colors-context.ts b/plugins/tracker-resources/src/components/gantt/lib/bar-colors-context.ts index bcb1449d2e..c29e20147b 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/bar-colors-context.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/bar-colors-context.ts @@ -15,7 +15,7 @@ import type { BarColorContext } from './bar-colors' const DONE_CATS = new Set(['task:statusCategory:Won', 'task:statusCategory:Lost']) -export function buildBarColorContext ( +export function buildBarColorContext( issues: Issue[], statusCategoryMap: Map, componentsById: Map, diff --git a/plugins/tracker-resources/src/components/gantt/lib/bar-colors.ts b/plugins/tracker-resources/src/components/gantt/lib/bar-colors.ts index a9677f50e6..8d1cc88aea 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/bar-colors.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/bar-colors.ts @@ -84,7 +84,7 @@ const NEUTRAL: BarColorTriple = { text: 'var(--theme-content-color)' } -function statusTriple (cat: string | null): BarColorTriple { +function statusTriple(cat: string | null): BarColorTriple { switch (cat) { case 'task:statusCategory:UnStarted': case 'tracker:statusCategory:Backlog': @@ -118,7 +118,7 @@ function statusTriple (cat: string | null): BarColorTriple { } } -function paletteFill (index: number): BarColorTriple { +function paletteFill(index: number): BarColorTriple { return { fill: 'palette', border: 'palette', @@ -127,7 +127,7 @@ function paletteFill (index: number): BarColorTriple { } } -export function resolveBarColors (issue: GanttBarIssueLike, mode: BarColorMode, ctx: BarColorContext): BarColorTriple { +export function resolveBarColors(issue: GanttBarIssueLike, mode: BarColorMode, ctx: BarColorContext): BarColorTriple { switch (mode) { case 'status': // status may be missing on synthetic milestone-summary bars diff --git a/plugins/tracker-resources/src/components/gantt/lib/bar-labels.ts b/plugins/tracker-resources/src/components/gantt/lib/bar-labels.ts index 3fe7d76e1f..1159257ced 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/bar-labels.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/bar-labels.ts @@ -29,7 +29,7 @@ export type BarLabelSlot = * Intentionally synchronous and non-reactive — the Svelte caller resolves * once per `(issue, slot)` change and passes the result to . */ -export function resolveBarLabel (issue: Issue, slot: BarLabelSlot): string { +export function resolveBarLabel(issue: Issue, slot: BarLabelSlot): string { switch (slot) { case 'none': return '' diff --git a/plugins/tracker-resources/src/components/gantt/lib/bar-overlays.ts b/plugins/tracker-resources/src/components/gantt/lib/bar-overlays.ts index 3a4277a6d2..93c1e49083 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/bar-overlays.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/bar-overlays.ts @@ -34,7 +34,7 @@ export type StatusCategoryLookup = (id: Ref) => string | null * field, and an old milestone is not a past-due issue. When `status` * is undefined we return false. */ -export function isPastDue (issue: GanttBarIssueLike, statusCategoryFor: StatusCategoryLookup, now: number): boolean { +export function isPastDue(issue: GanttBarIssueLike, statusCategoryFor: StatusCategoryLookup, now: number): boolean { if (issue.dueDate == null) return false if (issue.dueDate >= now) return false if (issue.status === undefined) return false // synthetic milestone-summary bar @@ -50,7 +50,7 @@ export function isPastDue (issue: GanttBarIssueLike, statusCategoryFor: StatusCa * Map keys are stringified Refs to dodge symbol-identity flakiness across * Svelte rerenders — all callers stringify on the way in. */ -export function isBlocked ( +export function isBlocked( _issue: GanttBarIssueLike, predecessorIds: ReadonlyArray>, predStatusOf: ReadonlyMap>, diff --git a/plugins/tracker-resources/src/components/gantt/lib/build-rows.ts b/plugins/tracker-resources/src/components/gantt/lib/build-rows.ts index 77069ea3b4..b74670e4ec 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/build-rows.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/build-rows.ts @@ -29,27 +29,27 @@ export const GROUP_HEADER_HEIGHT = 28 export type GanttGroupRow = | { - kind: 'group-header' - /** Stable id for keyed each-blocks (e.g. `group:s-backlog`). */ - id: string - groupKey: string - label: string - count: number - collapsed: boolean - y: number - height: number - } + kind: 'group-header' + /** Stable id for keyed each-blocks (e.g. `group:s-backlog`). */ + id: string + groupKey: string + label: string + count: number + collapsed: boolean + y: number + height: number + } | { - kind: 'issue' - /** Stable id (`issue:<_id>`) for keyed each-blocks. */ - id: string - issue: Issue - depth: number - y: number - height: number - /** Group this issue belongs to, so the canvas can tint by lane. */ - groupKey: string - } + kind: 'issue' + /** Stable id (`issue:<_id>`) for keyed each-blocks. */ + id: string + issue: Issue + depth: number + y: number + height: number + /** Group this issue belongs to, so the canvas can tint by lane. */ + groupKey: string + } export interface BuildGroupedRowsOptions { rowHeight: number @@ -76,7 +76,7 @@ export interface BuildGroupedRowsOptions { * unless the bucket is collapsed. A collapsed bucket still emits its * header (so the user can re-expand) but skips the issues. */ -export function buildGroupedRows ( +export function buildGroupedRows( issues: readonly Issue[], groupBy: GroupByKey, opts: BuildGroupedRowsOptions @@ -158,7 +158,7 @@ export function buildGroupedRows ( * produced by `buildGroupedRows`, but guards against future callers), the * row is skipped to keep the legacy LayoutRow invariants intact. */ -export function groupRowsToLayoutRows (rows: readonly GanttGroupRow[]): LayoutRow[] { +export function groupRowsToLayoutRows(rows: readonly GanttGroupRow[]): LayoutRow[] { const out: LayoutRow[] = [] for (const r of rows) { if (r.kind === 'group-header') { diff --git a/plugins/tracker-resources/src/components/gantt/lib/bulk-boundary.ts b/plugins/tracker-resources/src/components/gantt/lib/bulk-boundary.ts index ec87016bd5..72f4256c1a 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/bulk-boundary.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/bulk-boundary.ts @@ -42,7 +42,7 @@ export interface BulkDeltaBounds { maxDeltaMs: number } -export function computeBulkDeltaBounds ( +export function computeBulkDeltaBounds( memberIds: ReadonlySet>, allIssues: readonly Issue[], relations: readonly IssueRelation[], diff --git a/plugins/tracker-resources/src/components/gantt/lib/bulk-selection.ts b/plugins/tracker-resources/src/components/gantt/lib/bulk-selection.ts index a51767edd4..b314ee1e92 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/bulk-selection.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/bulk-selection.ts @@ -23,7 +23,7 @@ import type { Ref } from '@hcengineering/core' /** * Toggle the membership of `id` in `set`. The input set is never mutated. */ -export function toggleSelection (set: ReadonlySet, id: T): Set { +export function toggleSelection(set: ReadonlySet, id: T): Set { const next = new Set(set) if (next.has(id)) next.delete(id) else next.add(id) @@ -34,7 +34,7 @@ export function toggleSelection (set: ReadonlySet, id: T): Set { * Return a set containing only `id`. Used for the plain-click branch which * discards any prior multi-selection. */ -export function selectSingle (id: T): Set { +export function selectSingle(id: T): Set { return new Set([id]) } @@ -45,7 +45,7 @@ export function selectSingle (id: T): Set { * falls back to selecting just the target (matches the behaviour of every * file-explorer Shift-Click I have ever used). */ -export function selectRange ( +export function selectRange( current: ReadonlySet>, anchorId: Ref | null, targetId: Ref, @@ -70,7 +70,7 @@ export function selectRange ( } /** Return an empty selection set. Esc / background-click branch. */ -export function clearSelection (): Set> { +export function clearSelection(): Set> { return new Set() } @@ -78,6 +78,6 @@ export function clearSelection (): Set> { * Return a set with every entry from `orderedIds`. Cmd-A branch. Duplicates * in the input are collapsed by the Set constructor. */ -export function selectAll (orderedIds: ReadonlyArray>): Set> { +export function selectAll(orderedIds: ReadonlyArray>): Set> { return new Set(orderedIds) } diff --git a/plugins/tracker-resources/src/components/gantt/lib/calendar-ready.ts b/plugins/tracker-resources/src/components/gantt/lib/calendar-ready.ts index 7befe1ddd3..52bef03f63 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/calendar-ready.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/calendar-ready.ts @@ -26,7 +26,7 @@ export interface CalendarLoadState { holidaysLoaded: boolean } -export function isCalendarReady (s: CalendarLoadState): boolean { +export function isCalendarReady(s: CalendarLoadState): boolean { if (!s.projectCfgLoaded) return false // Legacy mode: no HR data is queried — ready as soon as we KNOW it is legacy. if (!s.cfgPresent) return true diff --git a/plugins/tracker-resources/src/components/gantt/lib/calendar-state.ts b/plugins/tracker-resources/src/components/gantt/lib/calendar-state.ts index c4ed108967..9886874977 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/calendar-state.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/calendar-state.ts @@ -74,8 +74,8 @@ export class CalendarStateMachine { private rawHolidays: PublicHoliday[] = [] private holidaysLoaded = false - constructor ( - private readonly q: { project: LiveQueryLike, departments: LiveQueryLike, holidays: LiveQueryLike }, + constructor( + private readonly q: { project: LiveQueryLike; departments: LiveQueryLike; holidays: LiveQueryLike }, private readonly hrModelPresent: boolean, private readonly classes: { project: Ref> @@ -87,7 +87,7 @@ export class CalendarStateMachine { private readonly onProjectSwitch: () => void ) {} - private get ready (): boolean { + private get ready(): boolean { return isCalendarReady({ projectCfgLoaded: this.projectCfgLoaded, cfgPresent: this.cfg !== undefined, @@ -105,11 +105,11 @@ export class CalendarStateMachine { * WorkingDaysConfig. Manual, calendar-independent date-picks (context menu) * are unaffected — they never take a mutation ticket. */ - get calendarMutable (): boolean { + get calendarMutable(): boolean { return this.ready && this.space !== undefined && this.space !== null } - get snapshot (): CalendarSnapshot { + get snapshot(): CalendarSnapshot { const scope = resolveHolidayScope( this.cfg?.holidayDepartment as Ref | undefined, this.head, @@ -123,7 +123,7 @@ export class CalendarStateMachine { } } - setSpace (sp: Ref | undefined): void { + setSpace(sp: Ref | undefined): void { if (this.space !== null && sp === this.space) return const isSwitch = this.space !== null // SYNCHRONOUS invalidation: generation bump + full reset happen before @@ -163,7 +163,7 @@ export class CalendarStateMachine { ) } - private syncHr (): void { + private syncHr(): void { if (!this.hrModelPresent || this.cfg === undefined) { this.teardownHr() return @@ -190,7 +190,7 @@ export class CalendarStateMachine { }) } - private teardownHr (): void { + private teardownHr(): void { this.q.departments.unsubscribe() this.q.holidays.unsubscribe() this.departments = new Map() @@ -199,7 +199,7 @@ export class CalendarStateMachine { this.holidaysLoaded = false } - beginMutation (): MutationTicket { + beginMutation(): MutationTicket { return { generation: this.generation, space: this.space ?? undefined } } @@ -211,7 +211,7 @@ export class CalendarStateMachine { * knows the space it is about to write to — that target space must match * the currently displayed project. */ - isTicketCurrent (t: MutationTicket, targetSpace?: Ref): boolean { + isTicketCurrent(t: MutationTicket, targetSpace?: Ref): boolean { if (!this.calendarMutable) return false if (t.generation !== this.generation) return false // Defense-in-depth: the ticket's own captured space must still match the @@ -224,7 +224,7 @@ export class CalendarStateMachine { return true } - private emit (): void { + private emit(): void { this.onChange(this.snapshot) } } diff --git a/plugins/tracker-resources/src/components/gantt/lib/critical-path.ts b/plugins/tracker-resources/src/components/gantt/lib/critical-path.ts index 406287b026..4d42487545 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/critical-path.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/critical-path.ts @@ -27,9 +27,9 @@ const EMPTY_RESULT: CriticalPathResult = { cycle: false } -type ScheduledIssue = Issue & { startDate: number, dueDate: number } +type ScheduledIssue = Issue & { startDate: number; dueDate: number } -function isScheduled (i: Issue): i is ScheduledIssue { +function isScheduled(i: Issue): i is ScheduledIssue { return i.startDate != null && i.dueDate != null } @@ -48,7 +48,7 @@ interface Bound { * fall back to legacy calendar-day arithmetic when `cfg` is undefined and * apply the +1-day FS rule consistently with the cascade scheduler. */ -function forwardBound (rel: IssueRelation, predES: number, predEF: number, cfg: WorkingCalendar | undefined): Bound { +function forwardBound(rel: IssueRelation, predES: number, predEF: number, cfg: WorkingCalendar | undefined): Bound { const lag = rel.lag ?? 0 switch (rel.kind) { case 'finish-to-start': @@ -69,7 +69,7 @@ function forwardBound (rel: IssueRelation, predES: number, predEF: number, cfg: * * Mirrors {@link forwardBound} via the reverse anchor helpers. */ -function backwardBound (rel: IssueRelation, succLS: number, succLF: number, cfg: WorkingCalendar | undefined): Bound { +function backwardBound(rel: IssueRelation, succLS: number, succLF: number, cfg: WorkingCalendar | undefined): Bound { const lag = rel.lag ?? 0 switch (rel.kind) { case 'finish-to-start': @@ -84,7 +84,7 @@ function backwardBound (rel: IssueRelation, succLS: number, succLF: number, cfg: } /** Returns issues in a topologically sorted order. Assumes graph is acyclic. */ -function topoSort (issues: ScheduledIssue[], relations: IssueRelation[]): ScheduledIssue[] { +function topoSort(issues: ScheduledIssue[], relations: IssueRelation[]): ScheduledIssue[] { const byRef = new Map, ScheduledIssue>() for (const i of issues) byRef.set(i._id, i) const inDegree = new Map, number>() @@ -137,7 +137,7 @@ function topoSort (issues: ScheduledIssue[], relations: IssueRelation[]): Schedu * side-effects. Callers memoize the result via 200ms debounce in GanttView's * reactive recompute. */ -export function computeCriticalPath ( +export function computeCriticalPath( issues: Issue[], relations: IssueRelation[], workingDays?: WorkingCalendar diff --git a/plugins/tracker-resources/src/components/gantt/lib/deadline-marker.ts b/plugins/tracker-resources/src/components/gantt/lib/deadline-marker.ts index 0311d3c18e..eb0ec87898 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/deadline-marker.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/deadline-marker.ts @@ -8,7 +8,7 @@ import type { Issue } from '@hcengineering/tracker' * True iff the issue has a deadline set. Treats both null and undefined * as "no deadline" — `0` is a valid (if degenerate) timestamp. */ -export function hasDeadline (issue: Issue): boolean { +export function hasDeadline(issue: Issue): boolean { return issue.deadline !== undefined && issue.deadline !== null } @@ -19,7 +19,7 @@ export function hasDeadline (issue: Issue): boolean { * * `dueDate === deadline` is NOT overdue — last-minute delivery is fine. */ -export function isOverdue (issue: Issue): boolean { +export function isOverdue(issue: Issue): boolean { const d = issue.deadline const due = issue.dueDate if (d === undefined || d === null) return false diff --git a/plugins/tracker-resources/src/components/gantt/lib/dependency-router.ts b/plugins/tracker-resources/src/components/gantt/lib/dependency-router.ts index 437fad9ec4..792f830e6a 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/dependency-router.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/dependency-router.ts @@ -34,7 +34,7 @@ export type Anchor = 'start' | 'finish' * FF — source finish → target finish * SF — source start → target finish (rare; "as-late-as-possible" cases) */ -export function anchorOf (kind: DependencyKind, end: 'source' | 'target'): Anchor { +export function anchorOf(kind: DependencyKind, end: 'source' | 'target'): Anchor { switch (kind) { case 'finish-to-start': return end === 'source' ? 'finish' : 'start' @@ -53,7 +53,7 @@ export function anchorOf (kind: DependencyKind, end: 'source' | 'target'): Ancho * center. Used by both the arrow-router (renders a bezier) and the * connector-dot (anchored on the source bar's right edge). */ -export function endpointPx (bar: BarRect, anchor: Anchor): Point { +export function endpointPx(bar: BarRect, anchor: Anchor): Point { const x = anchor === 'start' ? bar.left : bar.right const y = (bar.top + bar.bottom) / 2 return { x, y } @@ -70,7 +70,7 @@ export function endpointPx (bar: BarRect, anchor: Anchor): Point { * longer-distance curves visually balanced (control points at 1/4 and 3/4 * of the horizontal span). */ -export function bezierPath (p1: Point, p2: Point): string { +export function bezierPath(p1: Point, p2: Point): string { const dx = Math.abs(p2.x - p1.x) const offset = Math.max(40, dx / 2) const c1x = p1.x + offset @@ -99,12 +99,12 @@ interface Cubic { p3: Point } -function lerp (a: Point, b: Point, t: number): Point { +function lerp(a: Point, b: Point, t: number): Point { return { x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t } } /** de Casteljau split; returns the sub-curve on `[0, t]`. */ -function cubicLeft (c: Cubic, t: number): Cubic { +function cubicLeft(c: Cubic, t: number): Cubic { const a = lerp(c.p0, c.c1, t) const b = lerp(c.c1, c.c2, t) const d = lerp(c.c2, c.p3, t) @@ -115,7 +115,7 @@ function cubicLeft (c: Cubic, t: number): Cubic { } /** de Casteljau split; returns the sub-curve on `[t, 1]`. */ -function cubicRight (c: Cubic, t: number): Cubic { +function cubicRight(c: Cubic, t: number): Cubic { const a = lerp(c.p0, c.c1, t) const b = lerp(c.c1, c.c2, t) const d = lerp(c.c2, c.p3, t) @@ -125,7 +125,7 @@ function cubicRight (c: Cubic, t: number): Cubic { return { p0: g, c1: f, c2: d, p3: c.p3 } } -function controlPointsOf (p1: Point, p2: Point): Cubic { +function controlPointsOf(p1: Point, p2: Point): Cubic { const dx = Math.abs(p2.x - p1.x) const offset = Math.max(40, dx / 2) return { p0: p1, c1: { x: p1.x + offset, y: p1.y }, c2: { x: p2.x - offset, y: p2.y }, p3: p2 } @@ -147,7 +147,7 @@ function controlPointsOf (p1: Point, p2: Point): Cubic { * clamped so a degenerate short curve keeps a usable middle segment instead * of collapsing to nothing. */ -export function bezierHitPath (p1: Point, p2: Point, clearance: number = ARROW_HIT_CLEARANCE_PX): string { +export function bezierHitPath(p1: Point, p2: Point, clearance: number = ARROW_HIT_CLEARANCE_PX): string { const c = controlPointsOf(p1, p2) const polyLen = Math.hypot(c.c1.x - c.p0.x, c.c1.y - c.p0.y) + @@ -168,7 +168,7 @@ export function bezierHitPath (p1: Point, p2: Point, clearance: number = ARROW_H * B(0.5) = 0.125*p1 + 0.375*c1 + 0.375*c2 + 0.125*p2 * Same control-point convention as bezierPath(). */ -export function pathMidpoint (p1: Point, p2: Point): Point { +export function pathMidpoint(p1: Point, p2: Point): Point { const dx = Math.abs(p2.x - p1.x) const offset = Math.max(40, dx / 2) const c1 = { x: p1.x + offset, y: p1.y } @@ -184,7 +184,7 @@ export function pathMidpoint (p1: Point, p2: Point): Point { * tangent at the curve endpoint. With our control-point convention, * the tangent at p2 is parallel to (p2 - c2). 8px tip-to-base, 8px wide. */ -export function arrowheadPoints (p1: Point, p2: Point): [Point, Point, Point] { +export function arrowheadPoints(p1: Point, p2: Point): [Point, Point, Point] { const dx = Math.abs(p2.x - p1.x) const offset = Math.max(40, dx / 2) const c2 = { x: p2.x - offset, y: p2.y } @@ -220,9 +220,9 @@ export interface YBounds { /** Possible visibility states of a dependency arrow against the y-viewport. */ export type ArrowVisibility = | { kind: 'both-visible' } - | { kind: 'source-only', targetEdge: 'top' | 'bottom' } - | { kind: 'target-only', sourceEdge: 'top' | 'bottom' } - | { kind: 'both-off', sourceEdge: 'top' | 'bottom', targetEdge: 'top' | 'bottom' } + | { kind: 'source-only'; targetEdge: 'top' | 'bottom' } + | { kind: 'target-only'; sourceEdge: 'top' | 'bottom' } + | { kind: 'both-off'; sourceEdge: 'top' | 'bottom'; targetEdge: 'top' | 'bottom' } | { kind: 'none' } /** @@ -234,7 +234,7 @@ export type ArrowVisibility = * means the arrow path crosses the viewport vertically and must still be * drawn (clipped to the top + bottom edges). */ -export function classifyArrowVisibility ( +export function classifyArrowVisibility( source: BarRect | null, target: BarRect | null, bounds: YBounds @@ -270,7 +270,7 @@ export function classifyArrowVisibility ( * uses this to draw a bezier that ends at the viewport edge instead of at * the off-screen bar, with a small triangle indicator on top. */ -export function clippedEndpointPx (bar: BarRect, anchor: Anchor, bounds: YBounds, offEdge: 'top' | 'bottom'): Point { +export function clippedEndpointPx(bar: BarRect, anchor: Anchor, bounds: YBounds, offEdge: 'top' | 'bottom'): Point { const x = anchor === 'start' ? bar.left : bar.right const y = offEdge === 'top' ? bounds.top : bounds.bottom return { x, y } @@ -287,9 +287,9 @@ export function clippedEndpointPx (bar: BarRect, anchor: Anchor, bounds: YBounds * reactive block; the result drives a `dimmed: boolean` prop on every * GanttBar and GanttDependencyArrow. */ -export function connectedIssueIds ( +export function connectedIssueIds( hoveredIssue: Ref | null, - hoveredEdge: { source: Ref, target: Ref } | null, + hoveredEdge: { source: Ref; target: Ref } | null, relations: IssueRelation[] ): Set> { const out = new Set>() diff --git a/plugins/tracker-resources/src/components/gantt/lib/dependency-shift-notify.ts b/plugins/tracker-resources/src/components/gantt/lib/dependency-shift-notify.ts index 792274fca5..acefab8cc7 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/dependency-shift-notify.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/dependency-shift-notify.ts @@ -33,7 +33,7 @@ export { groupShiftsByRecipient } * gets the full picture (the bundle filters out the trigger entry on the * recipient side when needed). */ -export function buildPayloadFromPrimary (pe: PrimaryEdit): ShiftedIssuePayload { +export function buildPayloadFromPrimary(pe: PrimaryEdit): ShiftedIssuePayload { return { issueId: pe.issue._id, identifier: pe.issue.identifier, @@ -45,7 +45,7 @@ export function buildPayloadFromPrimary (pe: PrimaryEdit): ShiftedIssuePayload { * Build a `ShiftedIssuePayload` entry from a cascade shift. As with the primary * builder, only the issue identity travels — no date or delta. */ -export function buildPayloadFromShift (sh: CascadeShift): ShiftedIssuePayload { +export function buildPayloadFromShift(sh: CascadeShift): ShiftedIssuePayload { return { issueId: sh.issue._id, identifier: sh.issue.identifier, @@ -57,7 +57,7 @@ export function buildPayloadFromShift (sh: CascadeShift): ShiftedIssuePayload { * Convenience: combine the two builders + grouping into one call. Returns the * per-recipient bundle map ready for `dependency-shift-send.ts` to dispatch. */ -export function buildRecipientBundles ( +export function buildRecipientBundles( triggerUserId: AccountUuid | undefined, primaries: PrimaryEdit[], shifts: CascadeShift[], diff --git a/plugins/tracker-resources/src/components/gantt/lib/dependency-shift-send.ts b/plugins/tracker-resources/src/components/gantt/lib/dependency-shift-send.ts index f60e658d1b..edb8cd5bd3 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/dependency-shift-send.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/dependency-shift-send.ts @@ -68,7 +68,7 @@ export interface DependencyShiftSendArgs { * successfully at this point, so a failure here must never surface as an * error to the user. The notification is best-effort by design. */ -export async function sendDependencyShiftedNotifications ( +export async function sendDependencyShiftedNotifications( client: TxOperations, args: DependencyShiftSendArgs, onError?: (err: unknown) => void diff --git a/plugins/tracker-resources/src/components/gantt/lib/export-renderer.ts b/plugins/tracker-resources/src/components/gantt/lib/export-renderer.ts index 545992212c..177361ede2 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/export-renderer.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/export-renderer.ts @@ -25,7 +25,7 @@ export interface GanttExportInput { title?: string } -function esc (s: unknown): string { +function esc(s: unknown): string { return String(s ?? '') .replace(/&/g, '&') .replace(/): { start: number, end: number } | null { +function barRange(row: LayoutRow, summaryRanges: Map): { start: number; end: number } | null { if (row.kind === 'milestone' && row.milestone !== null) { return { start: row.milestone.startDate ?? row.milestone.targetDate, end: row.milestone.targetDate } } @@ -60,7 +60,7 @@ function barRange (row: LayoutRow, summaryRanges: Map): { return { start: row.issue.startDate, end: row.issue.dueDate } } -function renderIssueList (rows: LayoutRow[]): string { +function renderIssueList(rows: LayoutRow[]): string { const out: string[] = [] out.push(``) out.push(`Issues`) @@ -94,7 +94,7 @@ function renderIssueList (rows: LayoutRow[]): string { return out.join('') } -function renderHeader (input: GanttExportInput, chartWidth: number): string { +function renderHeader(input: GanttExportInput, chartWidth: number): string { const out: string[] = [] out.push( `` @@ -117,7 +117,7 @@ function renderHeader (input: GanttExportInput, chartWidth: number): string { return out.join('') } -function renderRowsAndBars (input: GanttExportInput): { svg: string, rects: Map } { +function renderRowsAndBars(input: GanttExportInput): { svg: string; rects: Map } { const out: string[] = [] const rects = new Map() for (const row of input.rows) { @@ -152,7 +152,7 @@ function renderRowsAndBars (input: GanttExportInput): { svg: string, rects: Map< return { svg: out.join(''), rects } } -function renderDependencies (relations: IssueRelation[], rects: Map): string { +function renderDependencies(relations: IssueRelation[], rects: Map): string { const out: string[] = [] for (const rel of relations) { const source = rects.get(String(rel.attachedTo)) @@ -178,7 +178,7 @@ function renderDependencies (relations: IssueRelation[], rects: Map { +async function canvasToPngBlob(canvas: HTMLCanvasElement): Promise { return await new Promise((resolve, reject) => { canvas.toBlob((blob) => { if (blob === null) reject(new Error('canvas.toBlob returned null')) @@ -52,7 +52,7 @@ async function canvasToPngBlob (canvas: HTMLCanvasElement): Promise { * Trigger a browser download of the Blob under `filename`. Convenience * wrapper around URL.createObjectURL + `` click. */ -function downloadBlob (blob: Blob, filename: string): void { +function downloadBlob(blob: Blob, filename: string): void { const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url @@ -66,13 +66,13 @@ function downloadBlob (blob: Blob, filename: string): void { }, 1000) } -function svgSize (svg: string): { width: number, height: number } { +function svgSize(svg: string): { width: number; height: number } { const width = Number(svg.match(/\bwidth="(\d+(?:\.\d+)?)"/)?.[1] ?? 1) const height = Number(svg.match(/\bheight="(\d+(?:\.\d+)?)"/)?.[1] ?? 1) return { width, height } } -async function svgToPngBlob (svg: string, scale = 2): Promise { +async function svgToPngBlob(svg: string, scale = 2): Promise { const { width, height } = svgSize(svg) const blob = new Blob([svg], { type: 'image/svg+xml;charset=utf-8' }) const url = URL.createObjectURL(blob) @@ -101,7 +101,7 @@ async function svgToPngBlob (svg: string, scale = 2): Promise { } } -async function blobToDataUrl (blob: Blob): Promise { +async function blobToDataUrl(blob: Blob): Promise { return await new Promise((resolve, reject) => { const reader = new FileReader() reader.onload = () => { @@ -114,7 +114,7 @@ async function blobToDataUrl (blob: Blob): Promise { }) } -export async function exportGanttDataToPng (input: GanttExportInput, filename: string = 'gantt-export'): Promise { +export async function exportGanttDataToPng(input: GanttExportInput, filename: string = 'gantt-export'): Promise { const svg = buildGanttExportSvg(input) const blob = await svgToPngBlob(svg, 2) downloadBlob(blob, filename.endsWith('.png') ? filename : filename + '.png') @@ -142,7 +142,7 @@ const MAX_CANVAS_DIM = 30000 const PDF_TILE_PX = 8000 /** Rasterise an export SVG into a single offscreen canvas at `scale`. */ -async function renderSvgToCanvas ( +async function renderSvgToCanvas( svg: string, width: number, height: number, @@ -175,7 +175,7 @@ async function renderSvgToCanvas ( } } -export async function exportGanttDataToPdf (input: GanttExportInput, filename: string = 'gantt-export'): Promise { +export async function exportGanttDataToPdf(input: GanttExportInput, filename: string = 'gantt-export'): Promise { const svg = buildGanttExportSvg(input) const { width, height } = svgSize(svg) const mod = await import('jspdf') diff --git a/plugins/tracker-resources/src/components/gantt/lib/group-by.ts b/plugins/tracker-resources/src/components/gantt/lib/group-by.ts index 84edbeb1a1..fc275854dd 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/group-by.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/group-by.ts @@ -63,7 +63,7 @@ const ALL_SENTINELS: ReadonlySet = new Set([ * multi-bucket mode would let an issue appear in every label-lane it owns, * but would also double-count it — deferred to v2. */ -export function resolveGroupKey (issue: Issue, groupBy: GroupByKey): string { +export function resolveGroupKey(issue: Issue, groupBy: GroupByKey): string { switch (groupBy) { case 'none': return NONE_KEY @@ -99,7 +99,7 @@ export function resolveGroupKey (issue: Issue, groupBy: GroupByKey): string { * by full name) is a UI-layer follow-up — it requires the person/status * stores which the helper layer cannot import without breaking purity. */ -export function sortGroupKeys (keys: readonly string[], groupBy: GroupByKey): string[] { +export function sortGroupKeys(keys: readonly string[], groupBy: GroupByKey): string[] { const arr = [...keys] if (groupBy === 'priority') { arr.sort((a, b) => Number(a) - Number(b)) @@ -127,7 +127,7 @@ export function sortGroupKeys (keys: readonly string[], groupBy: GroupByKey): st * rendered the raw Mongo-style id for any non-sentinel key, which made * group-by unusable for Component/Milestone/Label/Status/Priority. */ -export function getGroupLabel (key: string, _groupBy: GroupByKey, nameLookup?: ReadonlyMap): string { +export function getGroupLabel(key: string, _groupBy: GroupByKey, nameLookup?: ReadonlyMap): string { switch (key) { case NONE_KEY: return 'All issues' diff --git a/plugins/tracker-resources/src/components/gantt/lib/hr-holidays.ts b/plugins/tracker-resources/src/components/gantt/lib/hr-holidays.ts index f2ecf9aa53..113e32b8c9 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/hr-holidays.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/hr-holidays.ts @@ -17,7 +17,7 @@ import { type Department, type PublicHoliday, type TzDate } from '@hcengineering * UTC day. The `offset` field is ignored — calendar-day semantics, same as * hr-resources itself. */ -export function tzDateToUtcMidnight (date: TzDate): number { +export function tzDateToUtcMidnight(date: TzDate): number { return Date.UTC(date.year, date.month, date.day) } @@ -36,7 +36,7 @@ export function tzDateToUtcMidnight (date: TzDate): number { * so this module stays a pure function over plain data — no plugin-id * import, trivially unit-testable. */ -export function resolveHolidayScope ( +export function resolveHolidayScope( target: Ref | undefined, head: Ref, departments: Map, Department> @@ -65,7 +65,7 @@ export function resolveHolidayScope ( * Resolve HR public holidays to the engine's holiday list: only holidays of * departments inside `scope` count, de-duplicated per UTC day. */ -export function resolveHrHolidays (holidays: PublicHoliday[], scope: Set>): number[] { +export function resolveHrHolidays(holidays: PublicHoliday[], scope: Set>): number[] { const days = new Set() for (const h of holidays) { if (scope.has(h.department)) { diff --git a/plugins/tracker-resources/src/components/gantt/lib/layout.ts b/plugins/tracker-resources/src/components/gantt/lib/layout.ts index e7e58f7143..62a563e77f 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/layout.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/layout.ts @@ -11,7 +11,7 @@ export type GroupBy = 'none' | 'component' | 'milestone' const DEFAULT_OVERSCAN_PX = 240 /** Stable id used for keyed iteration AND collapse-state lookup. */ -export function rowId (row: LayoutRow): string { +export function rowId(row: LayoutRow): string { return row.id } @@ -56,7 +56,7 @@ export interface BuildLayoutOptions { * parent under a hard filter) are promoted to roots so matching issues don't * silently disappear from the Gantt. */ -export function buildLayout ( +export function buildLayout( issues: Issue[], milestones: MilestoneMarker[], _group: GroupBy, @@ -107,7 +107,7 @@ export function buildLayout ( } /** True iff `issueId` should appear under the active filter (match OR breadcrumb). */ - function isVisibleUnderFilter (issueId: string): boolean { + function isVisibleUnderFilter(issueId: string): boolean { if (!hasFilter) return true if (matchedIds?.has(issueId)) return true return breadcrumbIds.has(issueId) @@ -166,7 +166,7 @@ export function buildLayout ( const rows: LayoutRow[] = [] let y = 0 - function emitIssue (issue: Issue, depth: number): void { + function emitIssue(issue: Issue, depth: number): void { const issueId = issue._id as unknown as string if (!isVisibleUnderFilter(issueId)) return const kids = issueChildrenOf.get(issueId) ?? [] @@ -247,7 +247,7 @@ export function buildLayout ( * Return the subset of rows whose [y, y+height] intersects * [viewportTop - overscan, viewportTop + viewportHeight + overscan]. */ -export function filterVisibleRows ( +export function filterVisibleRows( rows: LayoutRow[], viewportTop: number, viewportHeight: number, diff --git a/plugins/tracker-resources/src/components/gantt/lib/menu-actions.ts b/plugins/tracker-resources/src/components/gantt/lib/menu-actions.ts index b57c8c2997..55e8e46932 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/menu-actions.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/menu-actions.ts @@ -43,7 +43,7 @@ const DAY_MS = 86_400_000 // working-days calendar (the schedule-day helpers or the effective // calendar), it must adopt the ready-gate + generation guard from // GanttView. -export function openSetStartDate (issue: Issue, anchor: PopupAlignment | undefined): void { +export function openSetStartDate(issue: Issue, anchor: PopupAlignment | undefined): void { const client = getClient() showPopup( DatePopup, @@ -57,7 +57,7 @@ export function openSetStartDate (issue: Issue, anchor: PopupAlignment | undefin if (result === undefined) return // dismissed const picked = result.value const newStart: Timestamp | null = picked === null ? null : snapToUtcMidnight(picked.getTime()) - const patch: { startDate: Timestamp | null, dueDate?: Timestamp | null } = { startDate: newStart } + const patch: { startDate: Timestamp | null; dueDate?: Timestamp | null } = { startDate: newStart } // Auto-fill due-date when both were null and the user is scheduling for the first time. if (newStart !== null && issue.startDate == null && issue.dueDate == null) { patch.dueDate = newStart + DAY_MS @@ -85,7 +85,7 @@ export function openSetStartDate (issue: Issue, anchor: PopupAlignment | undefin * right-click. The Gantt context-menu trigger captures the right-click * position via getEventPositionElement(ev) and passes it through. */ -export function ganttExtraActions (issue: Issue, anchor: PopupAlignment | undefined): UiAction[] { +export function ganttExtraActions(issue: Issue, anchor: PopupAlignment | undefined): UiAction[] { return [ { label: tracker.string.SetStartDate, diff --git a/plugins/tracker-resources/src/components/gantt/lib/predecessor-format.ts b/plugins/tracker-resources/src/components/gantt/lib/predecessor-format.ts index d3348838f3..333e97678d 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/predecessor-format.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/predecessor-format.ts @@ -26,11 +26,11 @@ const CODE_TO_KIND: Record<'FS' | 'SS' | 'FF' | 'SF', DependencyKind> = { SF: 'start-to-finish' } -export function kindCode (kind: DependencyKind): 'FS' | 'SS' | 'FF' | 'SF' { +export function kindCode(kind: DependencyKind): 'FS' | 'SS' | 'FF' | 'SF' { return KIND_TO_CODE[kind] } -export function kindFromCode (code: 'FS' | 'SS' | 'FF' | 'SF'): DependencyKind { +export function kindFromCode(code: 'FS' | 'SS' | 'FF' | 'SF'): DependencyKind { return CODE_TO_KIND[code] } @@ -38,7 +38,7 @@ export function kindFromCode (code: 'FS' | 'SS' | 'FF' | 'SF'): DependencyKind { * "+2d" for positive lag, "-1d" for negative, "" for zero (the column * gets unreadable if every entry has a +0d). */ -export function signedLag (lag: number): string { +export function signedLag(lag: number): string { if (lag === 0) return '' if (lag > 0) return `+${lag}d` return `${lag}d` @@ -49,7 +49,7 @@ export function signedLag (lag: number): string { * prefix is stripped so the notation stays short, matching MS Project / Asana * conventions ("PROJ-12" → "12"). */ -export function compactIssueNumber (identifier: string | undefined): string { +export function compactIssueNumber(identifier: string | undefined): string { return (identifier ?? '').replace(/^[A-Z]+-/, '') } @@ -64,7 +64,7 @@ export function compactIssueNumber (identifier: string | undefined): string { * visible `rows` — the fallback matters for callers such as fixtures and tests * that render rows without supplying the map. */ -export function resolveIssueNumber ( +export function resolveIssueNumber( ref: Ref, identifiers: ReadonlyMap, string>, rows: readonly LayoutRow[] @@ -85,7 +85,7 @@ export function resolveIssueNumber ( * displayed identifier is the source (`relation.attachedTo`), not the * target — predecessor identifier is the upstream side of the edge. */ -export function formatPredecessors ( +export function formatPredecessors( issue: Issue, relations: IssueRelation[], issueNumberOf: (ref: Ref) => string diff --git a/plugins/tracker-resources/src/components/gantt/lib/predecessor-list-format.ts b/plugins/tracker-resources/src/components/gantt/lib/predecessor-list-format.ts index 5d613413cf..cff2da5b0e 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/predecessor-list-format.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/predecessor-list-format.ts @@ -29,7 +29,7 @@ export interface PredecessorEntry { * the list column wants ONE entry at a time — formatPredecessors joins * the full set with ', ' which the column never renders. */ -export function formatPredecessorEntry (rel: IssueRelation, source: Issue): string { +export function formatPredecessorEntry(rel: IssueRelation, source: Issue): string { return `${(source as unknown as { identifier: string }).identifier} ${kindCode(rel.kind)}${signedLag(rel.lag)}` } @@ -42,7 +42,7 @@ export function formatPredecessorEntry (rel: IssueRelation, source: Issue): stri * upstream issue) are silently dropped: the cell still renders the * remaining valid predecessors instead of showing a broken '???' row. */ -export function sortPredecessorsByIdentifier ( +export function sortPredecessorsByIdentifier( rels: IssueRelation[], sources: Map, Issue> ): PredecessorEntry[] { @@ -68,7 +68,7 @@ export function sortPredecessorsByIdentifier ( * even two predecessors get a +1 more badge rather than rendering * both inline; the cell would otherwise blow the row height. */ -export function splitFirstAndRest (sorted: PredecessorEntry[]): { +export function splitFirstAndRest(sorted: PredecessorEntry[]): { first: PredecessorEntry | null rest: PredecessorEntry[] extraCount: number diff --git a/plugins/tracker-resources/src/components/gantt/lib/progress-fraction.ts b/plugins/tracker-resources/src/components/gantt/lib/progress-fraction.ts index 1b0cc60714..f6d25a103b 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/progress-fraction.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/progress-fraction.ts @@ -15,7 +15,7 @@ import type { StatusCategoryLookup } from './bar-overlays' * * Returns null if there is no data to compute a fraction from. */ -export function progressFraction (issue: Issue, subs: Issue[], statusCategoryFor: StatusCategoryLookup): number | null { +export function progressFraction(issue: Issue, subs: Issue[], statusCategoryFor: StatusCategoryLookup): number | null { if (issue.subIssues === 0) return null if (subs.length === 0) return null const done = subs.filter((s) => statusCategoryFor(s.status) === 'task:statusCategory:Won').length diff --git a/plugins/tracker-resources/src/components/gantt/lib/relation-activity-migration.ts b/plugins/tracker-resources/src/components/gantt/lib/relation-activity-migration.ts index 3738934838..ceabda4498 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/relation-activity-migration.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/relation-activity-migration.ts @@ -53,7 +53,7 @@ const TRACKER_ISSUE_CLASS = 'tracker:class:Issue' as Ref> * symptom: action === 'remove' AND (attachedToClass !== Issue OR no * updateCollection). */ -export function isBrokenRelationDum (msg: RelationDum): boolean { +export function isBrokenRelationDum(msg: RelationDum): boolean { if (msg.action !== 'remove') return false if (msg.attachedToClass !== TRACKER_ISSUE_CLASS) return true if (msg.updateCollection !== 'relations') return true @@ -69,10 +69,10 @@ export function isBrokenRelationDum (msg: RelationDum): boolean { * Returns `undefined` when the create-tx is missing — caller writes a * placeholder in that case (best-effort migration). */ -export function patchFromTxes ( +export function patchFromTxes( _dum: RelationDum, createTx: RelationCreateTx | undefined -): { attachedTo: Ref, attachedToClass: Ref>, updateCollection: string } | undefined { +): { attachedTo: Ref; attachedToClass: Ref>; updateCollection: string } | undefined { if (createTx === undefined) return undefined if (createTx.attachedTo === undefined || createTx.attachedToClass === undefined) return undefined return { diff --git a/plugins/tracker-resources/src/components/gantt/lib/saved-views.ts b/plugins/tracker-resources/src/components/gantt/lib/saved-views.ts index 5c3eaf9081..37be9d0366 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/saved-views.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/saved-views.ts @@ -30,11 +30,11 @@ export interface GanttViewOption { group: 'mine' | 'shared' } -function byNameCaseInsensitive (a: FilteredView, b: FilteredView): number { +function byNameCaseInsensitive(a: FilteredView, b: FilteredView): number { return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }) } -export function filterGanttFilteredViews ( +export function filterGanttFilteredViews( all: FilteredView[], ganttViewletId: Ref, myAccountUuid: string @@ -55,7 +55,7 @@ export function filterGanttFilteredViews ( return { mine, shared } } -export function viewSelectionOptions (mine: FilteredView[], shared: FilteredView[]): GanttViewOption[] { +export function viewSelectionOptions(mine: FilteredView[], shared: FilteredView[]): GanttViewOption[] { const out: GanttViewOption[] = [] for (const v of mine) out.push({ id: v._id, name: v.name, group: 'mine' }) for (const v of shared) out.push({ id: v._id, name: v.name, group: 'shared' }) diff --git a/plugins/tracker-resources/src/components/gantt/lib/scheduler.ts b/plugins/tracker-resources/src/components/gantt/lib/scheduler.ts index 08d340fe11..3d7b36362a 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/scheduler.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/scheduler.ts @@ -29,7 +29,7 @@ const DAY_MS = 86_400_000 * through the per-kind anchor helpers in `working-days.ts`, which respect * the optional WorkingCalendar. */ -export function addScheduleDays (t: number, days: number): number { +export function addScheduleDays(t: number, days: number): number { return t + days * DAY_MS } @@ -41,7 +41,7 @@ export function addScheduleDays (t: number, days: number): number { * Cycle-safe: each issue id is only visited once, so a buggy outline with * `a→b→a` is handled without an infinite loop. */ -export function descendantsWithDates (issue: Issue, allIssues: Issue[]): Issue[] { +export function descendantsWithDates(issue: Issue, allIssues: Issue[]): Issue[] { const childrenByParent = new Map, Issue[]>() for (const i of allIssues) { const parent = i.parents?.[0]?.parentId as Ref | undefined @@ -87,7 +87,7 @@ export function descendantsWithDates (issue: Issue, allIssues: Issue[]): Issue[] * A cycle would make the cascade diverge, so the caller blocks the edit and * surfaces a toast instead of writing it. */ -export function wouldCreateCycle (source: Ref, target: Ref, relations: IssueRelation[]): boolean { +export function wouldCreateCycle(source: Ref, target: Ref, relations: IssueRelation[]): boolean { if (source === target) return true // Adjacency: predecessor → successors. @@ -129,7 +129,7 @@ export function wouldCreateCycle (source: Ref, target: Ref, relati * but if cascade is ever applied to enterprise graphs > 10k linear * chains, refactor to an explicit work-stack. */ -export function detectCycle (relations: IssueRelation[]): Array> | null { +export function detectCycle(relations: IssueRelation[]): Array> | null { const out = new Map, Array>>() const nodes = new Set>() for (const r of relations) { @@ -152,7 +152,7 @@ export function detectCycle (relations: IssueRelation[]): Array> | nu const stack: Array> = [] let cycle: Array> | null = null - function visit (n: Ref): boolean { + function visit(n: Ref): boolean { color.set(n, GREY) stack.push(n) const succs = out.get(n) @@ -185,12 +185,12 @@ interface WorkingDates { due: number } -export function simulateCascade ( +export function simulateCascade( primary: PrimaryEdit[], allIssues: Issue[], relations: IssueRelation[], canEdit: (ref: Ref) => boolean, - options?: { maxIterations?: number, workingDays?: WorkingCalendar } + options?: { maxIterations?: number; workingDays?: WorkingCalendar } ): SimulateResult { const cfg = options?.workingDays // Step 0: pre-flight cycle check on the relation graph itself. diff --git a/plugins/tracker-resources/src/components/gantt/lib/sidebar-sort.ts b/plugins/tracker-resources/src/components/gantt/lib/sidebar-sort.ts index febc7d9565..dbaa5de6f4 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/sidebar-sort.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/sidebar-sort.ts @@ -40,9 +40,9 @@ export const NO_SORT: GanttSortState = { column: null, direction: 'asc' } * throwing — the stored blob is user-writable (localStorage) and must never * be able to break the sidebar. */ -export function parseSortState (raw: unknown): GanttSortState { +export function parseSortState(raw: unknown): GanttSortState { if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) return { ...NO_SORT } - const { column, direction } = raw as { column?: unknown, direction?: unknown } + const { column, direction } = raw as { column?: unknown; direction?: unknown } if (typeof column !== 'string' || !(ALL_COLUMN_KEYS as readonly string[]).includes(column)) { return { ...NO_SORT } } @@ -53,7 +53,7 @@ export function parseSortState (raw: unknown): GanttSortState { } /** Cycle: same column asc→desc→null (off); different column resets to asc. */ -export function cycleSort (state: GanttSortState, column: SidebarColumnKey): GanttSortState { +export function cycleSort(state: GanttSortState, column: SidebarColumnKey): GanttSortState { if (state.column !== column) { return { column, direction: 'asc' } } @@ -77,13 +77,13 @@ const NUMBER_COLS: ReadonlySet = new Set([ ]) const DATE_COLS: ReadonlySet = new Set(['startDate', 'dueDate', 'deadline']) -function readString (issue: Issue, col: SidebarColumnKey): string { +function readString(issue: Issue, col: SidebarColumnKey): string { if (col === 'title') return issue.title ?? '' if (col === 'identifier') return issue.identifier ?? '' return '' } -function readNumber (issue: Issue, col: SidebarColumnKey): number { +function readNumber(issue: Issue, col: SidebarColumnKey): number { if (col === 'estimation') return issue.estimation ?? 0 if (col === 'priority') return issue.priority as unknown as number if (col === 'modifiedOn') return issue.modifiedOn ?? 0 @@ -91,7 +91,7 @@ function readNumber (issue: Issue, col: SidebarColumnKey): number { return 0 } -function readDate (issue: Issue, col: SidebarColumnKey): number | null { +function readDate(issue: Issue, col: SidebarColumnKey): number | null { if (col === 'startDate') return issue.startDate ?? null if (col === 'dueDate') return issue.dueDate ?? null if (col === 'deadline') return issue.deadline ?? null @@ -99,7 +99,7 @@ function readDate (issue: Issue, col: SidebarColumnKey): number | null { } /** Build a comparator for `(column, direction)`. */ -export function comparatorFor (column: SidebarColumnKey, direction: SortDirection): IssueComparator { +export function comparatorFor(column: SidebarColumnKey, direction: SortDirection): IssueComparator { const sign = direction === 'asc' ? 1 : -1 if (STRING_COLS.has(column)) { diff --git a/plugins/tracker-resources/src/components/gantt/lib/types.ts b/plugins/tracker-resources/src/components/gantt/lib/types.ts index 14c9737aca..350daecbed 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/types.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/types.ts @@ -92,7 +92,7 @@ export interface MilestoneMarker { * (`{ kind, doc }`): `Issue`/`Milestone._id` are `Ref<…>` and thus assignable * to the engine's `GanttItem { _id: string }`. */ -export type DragTarget = { kind: 'issue', doc: Issue } | { kind: 'milestone', doc: Milestone } +export type DragTarget = { kind: 'issue'; doc: Issue } | { kind: 'milestone'; doc: Milestone } /** * Live drag/resize state — the engine reducer's `DragState`, specialised to the @@ -131,17 +131,17 @@ export interface CascadeShift { /** Discriminated result of simulateCascade. */ export type SimulateResult = - | { kind: 'no-cascade', primary: PrimaryEdit[] } - | { kind: 'cascade', primary: PrimaryEdit[], shifts: CascadeShift[], skippedUnscheduled: number } - | { kind: 'cycle', cycleNodes: Array> } + | { kind: 'no-cascade'; primary: PrimaryEdit[] } + | { kind: 'cascade'; primary: PrimaryEdit[]; shifts: CascadeShift[]; skippedUnscheduled: number } + | { kind: 'cycle'; cycleNodes: Array> } | { kind: 'iteration-overflow' } | { - kind: 'permission-denied' - lockedIssues: Issue[] - primary: PrimaryEdit[] - shifts: CascadeShift[] - skippedUnscheduled: number - } + kind: 'permission-denied' + lockedIssues: Issue[] + primary: PrimaryEdit[] + shifts: CascadeShift[] + skippedUnscheduled: number + } // --------------------------------------------------------------------------- // Critical path types diff --git a/plugins/tracker-resources/src/components/gantt/lib/undo-manager.ts b/plugins/tracker-resources/src/components/gantt/lib/undo-manager.ts index 6e5b9db3a9..f3e68cbe13 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/undo-manager.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/undo-manager.ts @@ -30,16 +30,16 @@ export interface DateChangeEntry { kind: 'date-change' issueId: Ref issueSpace: Ref - before: { startDate: Timestamp | null, dueDate: Timestamp | null } - after: { startDate: Timestamp | null, dueDate: Timestamp | null } + before: { startDate: Timestamp | null; dueDate: Timestamp | null } + after: { startDate: Timestamp | null; dueDate: Timestamp | null } description: string } export interface DateBatchChange { issueId: Ref issueSpace: Ref - before: { startDate: Timestamp | null, dueDate: Timestamp | null } - after: { startDate: Timestamp | null, dueDate: Timestamp | null } + before: { startDate: Timestamp | null; dueDate: Timestamp | null } + after: { startDate: Timestamp | null; dueDate: Timestamp | null } } export interface DateBatchEntry { @@ -64,8 +64,8 @@ export interface RelationEditEntry { kind: 'relation-edit' relationId: Ref relationSpace: Ref - before: { kind: DependencyKind, lag: number } - after: { kind: DependencyKind, lag: number } + before: { kind: DependencyKind; lag: number } + after: { kind: DependencyKind; lag: number } description: string } @@ -93,10 +93,10 @@ export type UndoEntry = | AttributeChangeEntry export type UndoResult = - | { kind: 'success', entry: UndoEntry, affectedIds: string[] } + | { kind: 'success'; entry: UndoEntry; affectedIds: string[] } | { kind: 'empty' } - | { kind: 'conflicted', entry: UndoEntry } - | { kind: 'error', entry: UndoEntry, error: unknown } + | { kind: 'conflicted'; entry: UndoEntry } + | { kind: 'error'; entry: UndoEntry; error: unknown } // ---- Client adapter -------------------------------------------------------- @@ -146,21 +146,21 @@ export interface ReadStore { get: () => T } -function makeStore (initial: T): ReadStore & { set: (v: T) => void } { +function makeStore(initial: T): ReadStore & { set: (v: T) => void } { let value = initial const subs = new Set<(value: T) => void>() return { - subscribe (run) { + subscribe(run) { subs.add(run) run(value) return () => { subs.delete(run) } }, - get () { + get() { return value }, - set (next) { + set(next) { value = next for (const fn of subs) fn(value) } @@ -189,7 +189,7 @@ export class UndoManager { public readonly nextUndoDescription: ReadStore = this._nextUndoDescription public readonly nextRedoDescription: ReadStore = this._nextRedoDescription - constructor ( + constructor( private readonly client: UndoApplyClient, // Class refs are injected rather than hardcoded in the module so the // manager never carries a stale copy of the plugin metadata. Production @@ -199,7 +199,7 @@ export class UndoManager { private readonly relationClass: string = 'tracker:class:IssueRelation' ) {} - push (entry: UndoEntry): void { + push(entry: UndoEntry): void { this.undoStack.push(entry) while (this.undoStack.length > LIMIT) this.undoStack.shift() // Any new edit invalidates the redo path. @@ -207,7 +207,7 @@ export class UndoManager { this.updateReactive() } - async undo (): Promise { + async undo(): Promise { const entry = this.undoStack.pop() if (entry === undefined) { this.updateReactive() @@ -232,7 +232,7 @@ export class UndoManager { } } - async redo (): Promise { + async redo(): Promise { const entry = this.redoStack.pop() if (entry === undefined) { this.updateReactive() @@ -251,22 +251,22 @@ export class UndoManager { } } - clear (): void { + clear(): void { this.undoStack.length = 0 this.redoStack.length = 0 this.updateReactive() } /** Test-only: stack-depth probe. Keeps the production API minimal. */ - undoStackDepthForTest (): number { + undoStackDepthForTest(): number { return this.undoStack.length } - redoStackDepthForTest (): number { + redoStackDepthForTest(): number { return this.redoStack.length } - private updateReactive (): void { + private updateReactive(): void { this._canUndo.set(this.undoStack.length > 0) this._canRedo.set(this.redoStack.length > 0) const topU = this.undoStack[this.undoStack.length - 1] @@ -278,7 +278,7 @@ export class UndoManager { // -- Apply paths ---------------------------------------------------------- /** Returns the issue/relation IDs that were touched (for flash feedback). */ - private async applyInverse (entry: UndoEntry): Promise { + private async applyInverse(entry: UndoEntry): Promise { const ops = this.client.apply(UNDO_MARKER) const affected: string[] = [] switch (entry.kind) { @@ -354,7 +354,7 @@ export class UndoManager { return affected } - private async applyForward (entry: UndoEntry): Promise { + private async applyForward(entry: UndoEntry): Promise { const ops = this.client.apply(UNDO_MARKER) const affected: string[] = [] switch (entry.kind) { @@ -436,7 +436,7 @@ export class UndoManager { * permissive: when in doubt, prefer false-positive (extra toast) over * false-negative (silent overwrite). */ - private async checkConflict (entry: UndoEntry, mode: 'undo' | 'redo'): Promise { + private async checkConflict(entry: UndoEntry, mode: 'undo' | 'redo'): Promise { switch (entry.kind) { case 'date-change': { const expected = mode === 'undo' ? entry.after : entry.before @@ -499,7 +499,7 @@ export class UndoManager { // ---- Helpers --------------------------------------------------------------- -function sameDatePair (issue: Issue, expected: { startDate: Timestamp | null, dueDate: Timestamp | null }): boolean { +function sameDatePair(issue: Issue, expected: { startDate: Timestamp | null; dueDate: Timestamp | null }): boolean { return ( (issue.startDate ?? null) === (expected.startDate ?? null) && (issue.dueDate ?? null) === (expected.dueDate ?? null) ) diff --git a/plugins/tracker-resources/src/components/gantt/lib/working-days-editor.ts b/plugins/tracker-resources/src/components/gantt/lib/working-days-editor.ts index 5b4426cd32..bf96576c62 100644 --- a/plugins/tracker-resources/src/components/gantt/lib/working-days-editor.ts +++ b/plugins/tracker-resources/src/components/gantt/lib/working-days-editor.ts @@ -11,7 +11,7 @@ import { deepEqual } from 'fast-equals' /** Mon-Fri — bit 0 = Mon … bit 6 = Sun, see `WorkingDaysConfig.weekdayMask`. */ export const DEFAULT_WEEKDAY_MASK = 0b0011111 -export function isWeekdayActive (mask: number, bit: number): boolean { +export function isWeekdayActive(mask: number, bit: number): boolean { return (mask & (1 << bit)) !== 0 } @@ -20,13 +20,13 @@ export function isWeekdayActive (mask: number, bit: number): boolean { * scheduler needs at least one working day per week, otherwise "next * working day" would never terminate. */ -export function toggleWeekdayBit (mask: number, bit: number): number { +export function toggleWeekdayBit(mask: number, bit: number): number { const next = mask ^ (1 << bit) return next === 0 ? mask : next } /** True when `bit` is the only active day — its toggle renders disabled. */ -export function isLastActiveWeekday (mask: number, bit: number): boolean { +export function isLastActiveWeekday(mask: number, bit: number): boolean { return mask === 1 << bit } @@ -36,10 +36,10 @@ export function isLastActiveWeekday (mask: number, bit: number): boolean { * entry in the component), sorted by name. Pure so it is unit-testable * without a component harness. */ -export function departmentItems ( +export function departmentItems( departments: Department[], head: Ref -): Array<{ id: string, label: string }> { +): Array<{ id: string; label: string }> { return departments .filter((d) => d._id !== head) .sort((a, b) => a.name.localeCompare(b.name)) @@ -47,7 +47,7 @@ export function departmentItems ( } /** `undefined` disables working-days mode; enabling starts from Mon-Fri. */ -export function enableWorkingDays (on: boolean): WorkingDaysConfig | undefined { +export function enableWorkingDays(on: boolean): WorkingDaysConfig | undefined { return on ? { weekdayMask: DEFAULT_WEEKDAY_MASK } : undefined } @@ -56,7 +56,7 @@ export function enableWorkingDays (on: boolean): WorkingDaysConfig | undefined { * REMOVES the key (delete, not an `undefined` assignment): a present-but- * undefined key would still surface in serialization and diffing. */ -export function applyDepartmentSelection ( +export function applyDepartmentSelection( value: WorkingDaysConfig, id: string, companyWideId: string @@ -75,7 +75,7 @@ export function applyDepartmentSelection ( * field — writing `undefined` could be stored as null, which would * masquerade as a configured calendar downstream. */ -export function workingDaysUpdate ( +export function workingDaysUpdate( next: WorkingDaysConfig | undefined, previous: WorkingDaysConfig | undefined ): { workingDaysConfig: WorkingDaysConfig } | { $unset: { workingDaysConfig: true } } | undefined { diff --git a/plugins/tracker-resources/src/components/issues/AssigneeEditor.svelte b/plugins/tracker-resources/src/components/issues/AssigneeEditor.svelte index 4ad078a955..bd3a28f674 100644 --- a/plugins/tracker-resources/src/components/issues/AssigneeEditor.svelte +++ b/plugins/tracker-resources/src/components/issues/AssigneeEditor.svelte @@ -83,7 +83,7 @@ let categories: AssigneeCategory[] = [] - function getCategories (object: AssigneeObject | AssigneeObject[]): void { + function getCategories(object: AssigneeObject | AssigneeObject[]): void { categories = [] if (cdocs.length > 0) { categories.push({ diff --git a/plugins/tracker-resources/src/components/issues/DependencyDirectionPopup.svelte b/plugins/tracker-resources/src/components/issues/DependencyDirectionPopup.svelte index 4ed10fcc1a..0034821cc1 100644 --- a/plugins/tracker-resources/src/components/issues/DependencyDirectionPopup.svelte +++ b/plugins/tracker-resources/src/components/issues/DependencyDirectionPopup.svelte @@ -23,10 +23,10 @@ close: 'predecessor' | 'successor' | undefined }>() - function pickPredecessor (): void { + function pickPredecessor(): void { dispatch('close', 'predecessor') } - function pickSuccessor (): void { + function pickSuccessor(): void { dispatch('close', 'successor') } diff --git a/plugins/tracker-resources/src/components/issues/Duration.svelte b/plugins/tracker-resources/src/components/issues/Duration.svelte index dd453d746a..510f86bf5c 100644 --- a/plugins/tracker-resources/src/components/issues/Duration.svelte +++ b/plugins/tracker-resources/src/components/issues/Duration.svelte @@ -20,7 +20,7 @@ let time: string = '' - function formatTime (passed: number): void { + function formatTime(passed: number): void { if (passed < 0) passed = 0 if (passed < HOUR) { translateCB(ui.string.Minutes, { minutes: Math.floor(passed / MINUTE) }, $themeStore.language, (res) => { diff --git a/plugins/tracker-resources/src/components/issues/HierarchyAddPopup.svelte b/plugins/tracker-resources/src/components/issues/HierarchyAddPopup.svelte index 202110b842..d90db4337d 100644 --- a/plugins/tracker-resources/src/components/issues/HierarchyAddPopup.svelte +++ b/plugins/tracker-resources/src/components/issues/HierarchyAddPopup.svelte @@ -36,10 +36,10 @@ $: createLabel = direction === 'parent' ? tracker.string.CreateNewParentIssue : tracker.string.CreateNewSubIssue $: linkLabel = direction === 'parent' ? tracker.string.LinkExistingParentIssue : tracker.string.LinkExistingSubIssue - function onCreate (): void { + function onCreate(): void { dispatch('close', 'create') } - function onLink (): void { + function onLink(): void { dispatch('close', 'link') } diff --git a/plugins/tracker-resources/src/components/issues/IssueDependenciesPanel.svelte b/plugins/tracker-resources/src/components/issues/IssueDependenciesPanel.svelte index 150ca22de2..fbc744ccfc 100644 --- a/plugins/tracker-resources/src/components/issues/IssueDependenciesPanel.svelte +++ b/plugins/tracker-resources/src/components/issues/IssueDependenciesPanel.svelte @@ -70,7 +70,7 @@ // monotonic generation and drop the response if a newer call has started. let resolveGen = 0 - async function resolveOtherIssues (): Promise { + async function resolveOtherIssues(): Promise { const gen = ++resolveGen const refs = new Set>() for (const r of incoming) refs.add(r.attachedTo) @@ -86,7 +86,7 @@ otherIssues = next } - async function openEditor (rel: IssueRelation): Promise { + async function openEditor(rel: IssueRelation): Promise { // canEdit is determined by the source (predecessor) issue, because the // relation is stored on it. // For outgoing rows the source IS this issue. @@ -107,7 +107,7 @@ showPopup(DependencyEditor, { relation: rel, canEdit }, 'middle') } - function onAddDependency (): void { + function onAddDependency(): void { // Two-step flow: first ask for direction (predecessor vs successor), // then open the project-scoped picker. The chooser pattern mirrors // HierarchyAddPopup so the "+" affordance is consistent across the @@ -118,7 +118,7 @@ }) } - function pickAndAttach (direction: 'predecessor' | 'successor'): void { + function pickAndAttach(direction: 'predecessor' | 'successor'): void { // ignoreObjects must exclude the current issue and any already-existing // relations on the chosen side. Outgoing for 'successor', incoming for // 'predecessor' — adding an existing edge would just be a duplicate. @@ -168,7 +168,7 @@ ) } - async function removeDependency (rel: IssueRelation): Promise { + async function removeDependency(rel: IssueRelation): Promise { // Same permission check as the editor's Delete button: only the // source-side editable user can drop the relation. const isOutgoing = String(rel.attachedTo) === String(issue._id) @@ -214,14 +214,14 @@ ) } - function formatLag (lag: number): string { + function formatLag(lag: number): string { if (lag === 0) return '' return lag > 0 ? ` +${lag}d` : ` ${lag}d` } /** Background colour per dependency kind — matches the four FS/SS/FF/SF * badge colours used in the Gantt predecessor column. */ - function kindClass (kind: IssueRelation['kind']): string { + function kindClass(kind: IssueRelation['kind']): string { switch (kind) { case 'finish-to-start': return 'kind-fs' diff --git a/plugins/tracker-resources/src/components/issues/IssueNotification.svelte b/plugins/tracker-resources/src/components/issues/IssueNotification.svelte index f83ed3a3ff..a39bda0ede 100644 --- a/plugins/tracker-resources/src/components/issues/IssueNotification.svelte +++ b/plugins/tracker-resources/src/components/issues/IssueNotification.svelte @@ -33,7 +33,7 @@ status = $statusStore.byId.get(issue.status) } - function handleIssueOpened (): void { + function handleIssueOpened(): void { if (params?.issueUrl) { const url = new URL(params?.issueUrl) const frontUrl = getMetadata(presentation.metadata.FrontUrl) ?? window.location.origin @@ -46,7 +46,7 @@ onRemove() } - function handleCopyUrl (): void { + function handleCopyUrl(): void { if (issue !== undefined) { void copyTextToClipboard(params?.issueUrl) } diff --git a/plugins/tracker-resources/src/components/issues/IssuePreview.svelte b/plugins/tracker-resources/src/components/issues/IssuePreview.svelte index 70798f4f15..98acf6c6ab 100644 --- a/plugins/tracker-resources/src/components/issues/IssuePreview.svelte +++ b/plugins/tracker-resources/src/components/issues/IssuePreview.svelte @@ -52,7 +52,7 @@ let parent: Issue | undefined - async function getParent (attachedTo: Ref | undefined): Promise { + async function getParent(attachedTo: Ref | undefined): Promise { if (attachedTo === undefined || attachedTo === tracker.ids.NoParent) { parent = undefined } else { diff --git a/plugins/tracker-resources/src/components/issues/IssueStatusActivity.svelte b/plugins/tracker-resources/src/components/issues/IssueStatusActivity.svelte index 4316db17f1..b7b27db211 100644 --- a/plugins/tracker-resources/src/components/issues/IssueStatusActivity.svelte +++ b/plugins/tracker-resources/src/components/issues/IssueStatusActivity.svelte @@ -30,7 +30,7 @@ ) let displaySt: WithTime[] = [] - function updateStatus (txes: Tx[], statuses: IdMap, _: number): void { + function updateStatus(txes: Tx[], statuses: IdMap, _: number): void { const result: WithTime[] = [] let current: Ref | undefined diff --git a/plugins/tracker-resources/src/components/issues/IssuesView.svelte b/plugins/tracker-resources/src/components/issues/IssuesView.svelte index 71bd34e4b0..4d2a2f056c 100644 --- a/plugins/tracker-resources/src/components/issues/IssuesView.svelte +++ b/plugins/tracker-resources/src/components/issues/IssuesView.svelte @@ -35,7 +35,7 @@ import GanttToolbarBar from '../gantt/GanttToolbarBar.svelte' import SearchEmptyState from '../SearchEmptyState.svelte' - function newIssue (): void { + function newIssue(): void { showPopup(CreateIssue, { space, shouldSaveDraft: true }, 'top') } @@ -74,7 +74,7 @@ let searchRaw = '' let searchEncoded = '' - function onSearchChange (e: CustomEvent<{ raw: string, encoded: string }>): void { + function onSearchChange(e: CustomEvent<{ raw: string, encoded: string }>): void { searchRaw = e.detail.raw searchEncoded = e.detail.encoded } @@ -92,7 +92,7 @@ }) let searchQuery: DocumentQuery = { ...query } - function updateSearchQuery (eff: string): void { + function updateSearchQuery(eff: string): void { searchQuery = eff === '' ? { ...query } : { ...query, $search: eff } } $: if (query !== undefined) updateSearchQuery(searchEncoded) diff --git a/plugins/tracker-resources/src/components/issues/KanbanView.svelte b/plugins/tracker-resources/src/components/issues/KanbanView.svelte index e999b92db5..83db1781a5 100644 --- a/plugins/tracker-resources/src/components/issues/KanbanView.svelte +++ b/plugins/tracker-resources/src/components/issues/KanbanView.svelte @@ -119,7 +119,7 @@ $: queryNoLookup = getCategoryQueryNoLookup(resultQuery) - function toIssue (object: any): WithLookup { + function toIssue(object: any): WithLookup { return object as WithLookup } @@ -208,7 +208,7 @@ const queryId = generateId() - function update (): void { + function update(): void { void updateTaskKanbanCategories( client, viewlet, @@ -244,7 +244,7 @@ const fullFilled: Record = {} - function getHeader (_class: Ref>, groupByKey: string): void { + function getHeader(_class: Ref>, groupByKey: string): void { if (groupByKey === noCategory) { headerComponent = undefined } else { @@ -269,7 +269,7 @@ } } - async function shouldShowFooter ( + async function shouldShowFooter( config: (string | BuildModelKey)[], reports: number, estimations: number, diff --git a/plugins/tracker-resources/src/components/issues/Move.svelte b/plugins/tracker-resources/src/components/issues/Move.svelte index 9b67742772..0fd377f06c 100644 --- a/plugins/tracker-resources/src/components/issues/Move.svelte +++ b/plugins/tracker-resources/src/components/issues/Move.svelte @@ -50,7 +50,7 @@ let processing = false - async function createMissingComponent (c: Ref): Promise { + async function createMissingComponent(c: Ref): Promise { const cur = $componentStore.get(c) const components = $componentStore.filter((it) => it.space === targetProject?._id) if ( @@ -144,7 +144,7 @@ let showManageAttributes: boolean = false $: isManageAttributesAvailable = issueToUpdate.size > 0 && docs[0]?.space !== targetProject?._id - function setOriginalAttributes () { + function setOriginalAttributes() { for (const issue of toMove) { const upd = issueToUpdate.get(issue._id) ?? {} upd.createComponent = false @@ -168,7 +168,7 @@ } } - function setReplacementAttributres (currentSpace: Project) { + function setReplacementAttributres(currentSpace: Project) { for (const issue of toMove) { const upd = issueToUpdate.get(issue._id) ?? {} diff --git a/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte b/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte index b894381643..35dbbba896 100644 --- a/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte +++ b/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte @@ -23,7 +23,7 @@ export let maxWidth = '' - function getHref (parentInfo: IssueParentInfo) { + function getHref(parentInfo: IssueParentInfo) { const loc = getCurrentLocation() loc.path[2] = trackerId loc.path[3] = parentInfo.identifier diff --git a/plugins/tracker-resources/src/components/issues/PredecessorsColumnPresenter.svelte b/plugins/tracker-resources/src/components/issues/PredecessorsColumnPresenter.svelte index 0b9d41ae64..48cadab695 100644 --- a/plugins/tracker-resources/src/components/issues/PredecessorsColumnPresenter.svelte +++ b/plugins/tracker-resources/src/components/issues/PredecessorsColumnPresenter.svelte @@ -70,7 +70,7 @@ $: entries = sortPredecessorsByIdentifier(relations, sources) $: split = splitFirstAndRest(entries) - function lagSuffix (lag: number): string { + function lagSuffix(lag: number): string { const s = signedLag(lag) return s === '' ? '' : ' ' + s } diff --git a/plugins/tracker-resources/src/components/issues/PredecessorsTooltip.svelte b/plugins/tracker-resources/src/components/issues/PredecessorsTooltip.svelte index 49c3277cf7..6f298259c0 100644 --- a/plugins/tracker-resources/src/components/issues/PredecessorsTooltip.svelte +++ b/plugins/tracker-resources/src/components/issues/PredecessorsTooltip.svelte @@ -20,7 +20,7 @@ */ export let predecessors: PredecessorEntry[] = [] - function lagSuffix (lag: number): string { + function lagSuffix(lag: number): string { if (lag === 0) return '' return lag > 0 ? ` +${lag}d` : ` ${lag}d` } diff --git a/plugins/tracker-resources/src/components/issues/RelationEditor.svelte b/plugins/tracker-resources/src/components/issues/RelationEditor.svelte index fa13f6fb84..43423d884d 100644 --- a/plugins/tracker-resources/src/components/issues/RelationEditor.svelte +++ b/plugins/tracker-resources/src/components/issues/RelationEditor.svelte @@ -10,7 +10,7 @@ export let readonly: boolean = false $: valueGroup = (type === 'isBlocking' ? (blockedBy ?? []) : (value[type] ?? [])).reduce< - Map>, Ref[]> + Map>, Ref[]> >((rv, x) => { if (rv.has(x._class)) { rv.get(x._class)?.push(x._id) diff --git a/plugins/tracker-resources/src/components/issues/RelationEditorPart.svelte b/plugins/tracker-resources/src/components/issues/RelationEditorPart.svelte index 20e12547ae..4d1247e42d 100644 --- a/plugins/tracker-resources/src/components/issues/RelationEditorPart.svelte +++ b/plugins/tracker-resources/src/components/issues/RelationEditorPart.svelte @@ -32,7 +32,7 @@ documents = result }) - async function handleClick (issue: RelatedDocument) { + async function handleClick(issue: RelatedDocument) { if (readonly || disabled) return const prop = type === 'isBlocking' ? 'blockedBy' : type const isBlockingValue = await client.findAll(value._class, { 'blockedBy._id': value._id }) @@ -71,7 +71,7 @@ await update(value, type, docs, label) } - async function handleRedirect (issue: Issue) { + async function handleRedirect(issue: Issue) { if (disabled) return const loc = await issueLinkFragmentProvider(issue) navigate(loc) diff --git a/plugins/tracker-resources/src/components/issues/SchedulingModeEditor.svelte b/plugins/tracker-resources/src/components/issues/SchedulingModeEditor.svelte index b1fac907db..fd5673692b 100644 --- a/plugins/tracker-resources/src/components/issues/SchedulingModeEditor.svelte +++ b/plugins/tracker-resources/src/components/issues/SchedulingModeEditor.svelte @@ -50,7 +50,7 @@ $: tooltipId = effectiveMode === 'manual' ? tracker.string.SchedulingModeTooltipManual : tracker.string.SchedulingModeTooltipAuto - async function toggle (): Promise { + async function toggle(): Promise { if (!editable) return const next: 'auto' | 'manual' = effectiveMode === 'manual' ? 'auto' : 'manual' await client.updateCollection( diff --git a/plugins/tracker-resources/src/components/issues/StatusEditor.svelte b/plugins/tracker-resources/src/components/issues/StatusEditor.svelte index d164656e31..443d1d9cbe 100644 --- a/plugins/tracker-resources/src/components/issues/StatusEditor.svelte +++ b/plugins/tracker-resources/src/components/issues/StatusEditor.svelte @@ -92,7 +92,7 @@ $: statuses = getTaskTypeStates(value.kind, $taskTypeStore, $statusStore.byId) - function getSelectedStatus ( + function getSelectedStatus( statuses: WithLookup[] | undefined, value: ValueType, defaultStatus: Ref | undefined diff --git a/plugins/tracker-resources/src/components/issues/StatusFilterValuePresenter.svelte b/plugins/tracker-resources/src/components/issues/StatusFilterValuePresenter.svelte index 296364fe69..7f37d0ae1f 100644 --- a/plugins/tracker-resources/src/components/issues/StatusFilterValuePresenter.svelte +++ b/plugins/tracker-resources/src/components/issues/StatusFilterValuePresenter.svelte @@ -30,7 +30,7 @@ categories = toIdMap(res) }) - function sort (value: Ref[], store: IdMap, categories: IdMap): IssueStatus[] { + function sort(value: Ref[], store: IdMap, categories: IdMap): IssueStatus[] { const result: IssueStatus[] = [] for (const val of new Set(value)) { const res = store.get(val) diff --git a/plugins/tracker-resources/src/components/issues/StatusSelector.svelte b/plugins/tracker-resources/src/components/issues/StatusSelector.svelte index df13cce3b4..d4ac064e8d 100644 --- a/plugins/tracker-resources/src/components/issues/StatusSelector.svelte +++ b/plugins/tracker-resources/src/components/issues/StatusSelector.svelte @@ -63,7 +63,7 @@ $: statuses = getStatuses($statusStore.byId, $typeStore, type) - function getStatuses ( + function getStatuses( statuses: IdMap, types: IdMap, typeId: Ref | undefined @@ -81,7 +81,7 @@ .filter((p) => p !== undefined) as IssueStatus[] } - function getSelectedStatus ( + function getSelectedStatus( statuses: WithLookup[] | undefined, val: Ref | undefined ): WithLookup | undefined { diff --git a/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte b/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte index 8bbfad89d2..7a8d60a61d 100644 --- a/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte @@ -76,7 +76,7 @@ let keys: KeyedAttribute[] = [] - function updateKeys (_class: Ref>, ignoreKeys: string[]): void { + function updateKeys(_class: Ref>, ignoreKeys: string[]): void { const filtredKeys = getFiltredKeys(hierarchy, _class, ignoreKeys) keys = filtredKeys.filter((key) => !isCollectionAttr(hierarchy, key)) } @@ -91,7 +91,7 @@ const allowedCollections = ['collaborators'] - function getMixinKeys (mixin: Ref>): KeyedAttribute[] { + function getMixinKeys(mixin: Ref>): KeyedAttribute[] { const mixinClass = hierarchy.getClass(mixin) const filtredKeys = getFiltredKeys( hierarchy, diff --git a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte index ce3d4bfa1d..7ced881ca9 100644 --- a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte @@ -103,7 +103,7 @@ $: read(issueId) - function read (_id?: Ref): void { + function read(_id?: Ref): void { if (_id && lastId && lastId !== _id) { const prev = lastId lastId = _id @@ -139,7 +139,7 @@ $: hasParentIssue = issue?.attachedTo !== tracker.ids.NoParent let saved = false - async function save (): Promise { + async function save(): Promise { if (issue === undefined || !canSave) { return } @@ -152,14 +152,14 @@ } } - function showContextMenu (ev: MouseEvent): void { + function showContextMenu(ev: MouseEvent): void { if (issue !== undefined) { showMenu(ev, { object: issue, excludedActions: [view.action.Open] }) } } const manager = createFocusManager() - export function canClose (): boolean { + export function canClose(): boolean { if (descriptionBox.isFocused()) { return false } @@ -172,7 +172,7 @@ $: descriptionKey = hierarchy.getAttribute(tracker.class.Issue, 'description') - function getEditorFooter ( + function getEditorFooter( _class?: Ref> ): { footer: AnyComponent, props?: Record } | undefined { if (_class === undefined) { @@ -194,7 +194,7 @@ $: projectType = taskType?.parent !== undefined ? $typeStore.get(taskType.parent) : undefined - async function unsetParentIssue (): Promise { + async function unsetParentIssue(): Promise { if (issue === undefined || readonly) return await client.update(issue, { attachedTo: tracker.ids.NoParent }) @@ -208,7 +208,7 @@ * to the upstream CreateIssue) and re-rank the current issue to the end * of the new parent's children — matches LinkSubIssueActionPopup.onClose. */ - function openParentChooser (): void { + function openParentChooser(): void { if (issue === undefined || effectiveReadonly) return const target: Issue = issue showPopup(HierarchyAddPopup, { direction: 'parent' }, 'top', (mode?: 'create' | 'link') => { diff --git a/plugins/tracker-resources/src/components/issues/edit/QueryIssuesList.svelte b/plugins/tracker-resources/src/components/issues/edit/QueryIssuesList.svelte index 2104c7b3fd..fa3b1a41f0 100644 --- a/plugins/tracker-resources/src/components/issues/edit/QueryIssuesList.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/QueryIssuesList.svelte @@ -48,7 +48,7 @@ let viewOptions: ViewOptions | undefined export let focusIndex = -1 - function openNewIssueDialog (): void { + function openNewIssueDialog(): void { showPopup(tracker.component.CreateIssue, { space: object.space, ...createParams, shouldSaveDraft }, 'top') } @@ -93,7 +93,7 @@ } ) - function updateConfiguration (configurationRaw: Viewlet[], preference: ViewletPreference[]): void { + function updateConfiguration(configurationRaw: Viewlet[], preference: ViewletPreference[]): void { const newConfigurations: Record>, Viewlet['config']> = {} for (const v of configurationRaw) { diff --git a/plugins/tracker-resources/src/components/issues/edit/SubIssueList.svelte b/plugins/tracker-resources/src/components/issues/edit/SubIssueList.svelte index 412ca4cf40..5340618c5a 100644 --- a/plugins/tracker-resources/src/components/issues/edit/SubIssueList.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/SubIssueList.svelte @@ -45,7 +45,7 @@ } ) let docs: Doc[] = [] - function select () { + function select() { listProvider.update(docs) listProvider.updateFocus(docs[0]) list?.select(0, undefined) diff --git a/plugins/tracker-resources/src/components/issues/edit/SubIssueSelector.svelte b/plugins/tracker-resources/src/components/issues/edit/SubIssueSelector.svelte index 53a3c22b0b..c54c6d84a0 100644 --- a/plugins/tracker-resources/src/components/issues/edit/SubIssueSelector.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/SubIssueSelector.svelte @@ -45,21 +45,21 @@ let subIssues: WithLookup[] | undefined let subIssuesElement: Element - async function openIssue (target: Issue) { + async function openIssue(target: Issue) { if (target._id !== issue._id) { const loc = await issueLinkFragmentProvider(target) navigate(loc) } } - function openSubIssue (target: Ref) { + function openSubIssue(target: Ref) { const subIssue = subIssues?.find((p) => p._id === target) if (subIssue !== undefined) { openIssue(subIssue) } } - function openParentIssue () { + function openParentIssue() { if (parentIssue) { closeTooltip() openIssue(parentIssue) diff --git a/plugins/tracker-resources/src/components/issues/edit/SubIssues.svelte b/plugins/tracker-resources/src/components/issues/edit/SubIssues.svelte index ce0dd37416..91984c7fc6 100644 --- a/plugins/tracker-resources/src/components/issues/edit/SubIssues.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/SubIssues.svelte @@ -45,7 +45,7 @@ * the icon-only LinkExisting button had when collapsed under the * `hasSubIssues` slot-gate. */ - function openSubChooser (): void { + function openSubChooser(): void { showPopup(HierarchyAddPopup, { direction: 'sub' }, 'top', (mode?: 'create' | 'link') => { if (mode === 'link') { showPopup(LinkSubIssueActionPopup, { value: issue }, 'top') diff --git a/plugins/tracker-resources/src/components/issues/edit/SubIssuesSelector.svelte b/plugins/tracker-resources/src/components/issues/edit/SubIssuesSelector.svelte index f650fbf08b..e58a486c3a 100644 --- a/plugins/tracker-resources/src/components/issues/edit/SubIssuesSelector.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/SubIssuesSelector.svelte @@ -67,7 +67,7 @@ categories = toIdMap(res) }) - function update (value: WithLookup): void { + function update(value: WithLookup): void { if (value.$lookup?.subIssues !== undefined) { query.unsubscribe() subIssues = value.$lookup.subIssues as Issue[] @@ -96,7 +96,7 @@ } $: hasSubIssues = (subIssues?.length ?? 0) > 0 - function openIssue (target: Ref): void { + function openIssue(target: Ref): void { if (target !== value._id) { showPanel(tracker.component.EditIssue, target, value._class, 'content') } diff --git a/plugins/tracker-resources/src/components/issues/related/RelatedIssuePopup.svelte b/plugins/tracker-resources/src/components/issues/related/RelatedIssuePopup.svelte index cf02b255c2..f6b9ce0d78 100644 --- a/plugins/tracker-resources/src/components/issues/related/RelatedIssuePopup.svelte +++ b/plugins/tracker-resources/src/components/issues/related/RelatedIssuePopup.svelte @@ -102,17 +102,17 @@ $: hasSelected = value.some((v) => v.isSelected) - function openIssue (target: Ref): void { + function openIssue(target: Ref): void { subIssueListProvider(subIssues, target) showPanel(tracker.component.EditIssue, target, tracker.class.Issue, 'content') } - function sendSelect (id: SelectPopupValueType['id']): void { + function sendSelect(id: SelectPopupValueType['id']): void { selected = id openIssue(id as Ref) } - export function onKeydown (key: KeyboardEvent): boolean { + export function onKeydown(key: KeyboardEvent): boolean { if (key.code === 'Tab') { dispatch('close') key.preventDefault() diff --git a/plugins/tracker-resources/src/components/issues/related/RelatedIssueSelector.svelte b/plugins/tracker-resources/src/components/issues/related/RelatedIssueSelector.svelte index 7d12c757fb..f9c6053eba 100644 --- a/plugins/tracker-resources/src/components/issues/related/RelatedIssueSelector.svelte +++ b/plugins/tracker-resources/src/components/issues/related/RelatedIssueSelector.svelte @@ -36,7 +36,7 @@ $: subIssues = sortStatuses(_object?._id !== undefined ? [...($relatedIssues.get(_object?._id) ?? [])] : []) let countComplete: number = 0 - function sortStatuses (statuses: IssueRef[]): { _id: Ref, status: Ref }[] { + function sortStatuses(statuses: IssueRef[]): { _id: Ref, status: Ref }[] { statuses.sort((a, b) => { const aStatus = $statusStore.byId.get(a.status) const bStatus = $statusStore.byId.get(b.status) diff --git a/plugins/tracker-resources/src/components/issues/timereport/EstimationValueEditor.svelte b/plugins/tracker-resources/src/components/issues/timereport/EstimationValueEditor.svelte index 67a126034b..4c2c8e5e9c 100644 --- a/plugins/tracker-resources/src/components/issues/timereport/EstimationValueEditor.svelte +++ b/plugins/tracker-resources/src/components/issues/timereport/EstimationValueEditor.svelte @@ -34,7 +34,7 @@ let shown: boolean = false - function _onchange (ev: Event) { + function _onchange(ev: Event) { const value = (ev.target as HTMLInputElement).valueAsNumber if (Number.isFinite(value)) { onChange(value) diff --git a/plugins/tracker-resources/src/components/issues/timereport/ReportedTimeEditor.svelte b/plugins/tracker-resources/src/components/issues/timereport/ReportedTimeEditor.svelte index a9ed21fcbb..6cff242cb0 100644 --- a/plugins/tracker-resources/src/components/issues/timereport/ReportedTimeEditor.svelte +++ b/plugins/tracker-resources/src/components/issues/timereport/ReportedTimeEditor.svelte @@ -37,7 +37,7 @@ $: defaultTimeReportDay = currentProject?.defaultTimeReportDay - function addTimeReport (event: MouseEvent): void { + function addTimeReport(event: MouseEvent): void { if (readonly) return showPopup( TimeSpendReportPopup, @@ -53,7 +53,7 @@ eventToHTMLElement(event) ) } - function showReports (event: MouseEvent): void { + function showReports(event: MouseEvent): void { if (readonly) return showPopup(ReportsPopup, { issue: object }, eventToHTMLElement(event)) } diff --git a/plugins/tracker-resources/src/components/issues/timereport/ReportsPopup.svelte b/plugins/tracker-resources/src/components/issues/timereport/ReportsPopup.svelte index bc1cba9162..ce58a136e6 100644 --- a/plugins/tracker-resources/src/components/issues/timereport/ReportsPopup.svelte +++ b/plugins/tracker-resources/src/components/issues/timereport/ReportsPopup.svelte @@ -28,7 +28,7 @@ $: defaultTimeReportDay = currentProject?.defaultTimeReportDay - export function canClose (): boolean { + export function canClose(): boolean { return true } const options: FindOptions = { @@ -37,7 +37,7 @@ employee: contact.mixin.Employee } } - function addReport (event: MouseEvent): void { + function addReport(event: MouseEvent): void { showPopup( TimeSpendReportPopup, { diff --git a/plugins/tracker-resources/src/components/issues/timereport/TimePresenter.svelte b/plugins/tracker-resources/src/components/issues/timereport/TimePresenter.svelte index 9364b42829..37d003f55e 100644 --- a/plugins/tracker-resources/src/components/issues/timereport/TimePresenter.svelte +++ b/plugins/tracker-resources/src/components/issues/timereport/TimePresenter.svelte @@ -33,7 +33,7 @@ $: void getLabel(days, hours, minutes, $themeStore.language) - async function getLabel (days: number, hours: number, minutes: number, language: string): Promise { + async function getLabel(days: number, hours: number, minutes: number, language: string): Promise { try { const res: string[] = [] if (days > 0) { diff --git a/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReport.svelte b/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReport.svelte index 1ce87d1d81..7ecd28bf6d 100644 --- a/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReport.svelte +++ b/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReport.svelte @@ -34,7 +34,7 @@ } $: defaultTimeReportDay = currentProject?.defaultTimeReportDay - function editSpendReport (event: MouseEvent): void { + function editSpendReport(event: MouseEvent): void { if (!issue) { return } diff --git a/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReportPopup.svelte b/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReportPopup.svelte index b159d9f75c..af39fed900 100644 --- a/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReportPopup.svelte +++ b/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReportPopup.svelte @@ -45,13 +45,13 @@ let selectedTimeReportDay = getTimeReportDayType(data.date) - export function canClose (): boolean { + export function canClose(): boolean { return true } const client = getClient() - async function create (): Promise { + async function create(): Promise { if (value === undefined) { if (space && issueId) { await client.addCollection( diff --git a/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReportsList.svelte b/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReportsList.svelte index e5542d7e13..674279ab39 100644 --- a/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReportsList.svelte +++ b/plugins/tracker-resources/src/components/issues/timereport/TimeSpendReportsList.svelte @@ -36,7 +36,7 @@ const toProjectId = (ref: Ref) => ref as Ref - function editSpendReport ( + function editSpendReport( event: MouseEvent, value: TimeSpendReport, defaultTimeReportDay: TimeReportDayType | undefined diff --git a/plugins/tracker-resources/src/components/milestones/EditMilestone.svelte b/plugins/tracker-resources/src/components/milestones/EditMilestone.svelte index 55cd7fb56c..e5407aa155 100644 --- a/plugins/tracker-resources/src/components/milestones/EditMilestone.svelte +++ b/plugins/tracker-resources/src/components/milestones/EditMilestone.svelte @@ -43,7 +43,7 @@ await client.update(object, { [field]: value }) } - async function changeStartDate (value: number | null | undefined): Promise { + async function changeStartDate(value: number | null | undefined): Promise { const startDate = value ?? null // Never persist an inverted range. If the new start is past the // current target, pull the target forward to match (start === target). @@ -53,7 +53,7 @@ } await client.update(object, { startDate }) } - async function changeTargetDate (value: number | null | undefined): Promise { + async function changeTargetDate(value: number | null | undefined): Promise { if (value === null || value === undefined) return // Keep the range non-inverted — clamp the start back if it now sits // after the target. @@ -80,7 +80,7 @@ $: descriptionKey = client.getHierarchy().getAttribute(tracker.class.Component, 'description') let descriptionBox: AttachmentStyleBoxEditor - function hashFromId (id: string): number { + function hashFromId(id: string): number { let h = 0 for (let i = 0; i < id.length; i++) h = ((h << 5) - h + id.charCodeAt(i)) | 0 return Math.abs(h) @@ -90,7 +90,7 @@ $: swatchCss = getPlatformColor(effectiveColor, $themeStore.dark) $: selectedName = getPlatformColors($themeStore.dark)[effectiveColor]?.name - function pickColor (ev: MouseEvent): void { + function pickColor(ev: MouseEvent): void { showPopup( ColorsPopup, { colors: getPlatformColors($themeStore.dark), selected: selectedName, columns: 8 }, diff --git a/plugins/tracker-resources/src/components/milestones/MilestoneBrowser.svelte b/plugins/tracker-resources/src/components/milestones/MilestoneBrowser.svelte index f6acc29a60..7fc5f0f42e 100644 --- a/plugins/tracker-resources/src/components/milestones/MilestoneBrowser.svelte +++ b/plugins/tracker-resources/src/components/milestones/MilestoneBrowser.svelte @@ -40,7 +40,7 @@ let viewOptions: ViewOptions | undefined let searchQuery: DocumentQuery = { ...query } - function updateSearchQuery (search: string): void { + function updateSearchQuery(search: string): void { searchQuery = search === '' ? { ...query } : { ...query, $search: search } } $: if (query) updateSearchQuery(search) diff --git a/plugins/tracker-resources/src/components/milestones/MilestoneFilter.svelte b/plugins/tracker-resources/src/components/milestones/MilestoneFilter.svelte index 2858308224..0f241df6df 100644 --- a/plugins/tracker-resources/src/components/milestones/MilestoneFilter.svelte +++ b/plugins/tracker-resources/src/components/milestones/MilestoneFilter.svelte @@ -50,7 +50,7 @@ let filterUpdateTimeout: any | undefined const client = getClient() - async function getValues (search: string): Promise { + async function getValues(search: string): Promise { if (objectsPromise) { await objectsPromise } @@ -80,11 +80,11 @@ objectsPromise = undefined } - function isSelected (value: Ref | undefined, values: Set | undefined | null>): boolean { + function isSelected(value: Ref | undefined, values: Set | undefined | null>): boolean { return values.has(value) } - function handleFilterToggle (value: Ref | undefined): void { + function handleFilterToggle(value: Ref | undefined): void { if (isSelected(value, selectedValues)) { selectedValues.delete(value) } else { @@ -95,7 +95,7 @@ updateFilter(selectedValues) } - function updateFilter (newValues: Set | null | undefined>) { + function updateFilter(newValues: Set | null | undefined>) { clearTimeout(filterUpdateTimeout) filterUpdateTimeout = setTimeout(() => { @@ -104,13 +104,13 @@ }, FILTER_DEBOUNCE_MS) } - function getStatusItem (status: MilestoneStatus, docs: Milestone[]): Milestone[] { + function getStatusItem(status: MilestoneStatus, docs: Milestone[]): Milestone[] { let vals = docs.filter((p) => p.status === status) vals = sortFilterValues(vals, (v) => isSelected(v._id, selectedValues)) return vals } - function getStatuses (): MilestoneStatus[] { + function getStatuses(): MilestoneStatus[] { const res = Array.from(Object.values(MilestoneStatus).filter((v) => !isNaN(Number(v)))) as MilestoneStatus[] return res } diff --git a/plugins/tracker-resources/src/components/milestones/MilestoneStatusEditor.svelte b/plugins/tracker-resources/src/components/milestones/MilestoneStatusEditor.svelte index 83f2f1b6af..d5f42f7034 100644 --- a/plugins/tracker-resources/src/components/milestones/MilestoneStatusEditor.svelte +++ b/plugins/tracker-resources/src/components/milestones/MilestoneStatusEditor.svelte @@ -43,7 +43,7 @@ const dispatch = createEventDispatcher() const client = getClient() - function handlePopupOpen (event: MouseEvent) { + function handlePopupOpen(event: MouseEvent) { showPopup( SelectPopup, { value: itemsInfo, placeholder: tracker.string.SetStatus }, @@ -52,7 +52,7 @@ ) } - async function changeStatus (newStatus: Milestone['status'] | null | undefined) { + async function changeStatus(newStatus: Milestone['status'] | null | undefined) { if (disabled || newStatus == null || value === newStatus) { return } diff --git a/plugins/tracker-resources/src/components/milestones/NewMilestone.svelte b/plugins/tracker-resources/src/components/milestones/NewMilestone.svelte index a74c93fa50..e0cd43f2cf 100644 --- a/plugins/tracker-resources/src/components/milestones/NewMilestone.svelte +++ b/plugins/tracker-resources/src/components/milestones/NewMilestone.svelte @@ -38,7 +38,7 @@ targetDate: Date.now() + 14 * 24 * 60 * 60 * 1000 } - async function onSave () { + async function onSave() { await client.createDoc(tracker.class.Milestone, space, object) } diff --git a/plugins/tracker-resources/src/components/projects/CreateProject.svelte b/plugins/tracker-resources/src/components/projects/CreateProject.svelte index 3fc689fd3c..0122faaef0 100644 --- a/plugins/tracker-resources/src/components/projects/CreateProject.svelte +++ b/plugins/tracker-resources/src/components/projects/CreateProject.svelte @@ -101,21 +101,21 @@ const dispatch = createEventDispatcher() - function normalizeAutoJoinForRoles (roles: AccountRole[]): AccountRole[] | undefined { + function normalizeAutoJoinForRoles(roles: AccountRole[]): AccountRole[] | undefined { return roles.length > 0 ? [...roles] : undefined } - function autoJoinRolesEqual (a: AccountRole[] | undefined, b: AccountRole[] | undefined): boolean { + function autoJoinRolesEqual(a: AccountRole[] | undefined, b: AccountRole[] | undefined): boolean { return deepEqual([...(a ?? [])].sort(), [...(b ?? [])].sort()) } - function setGuestAutoJoin (enabled: boolean): void { + function setGuestAutoJoin(enabled: boolean): void { autoJoinForRoles = setWorkspaceGuestAutoJoinRoles(autoJoinForRoles, enabled) } $: isNew = project == null - async function handleSave (): Promise { + async function handleSave(): Promise { if (isNew) { await createProject() } else { @@ -125,7 +125,7 @@ let identifier: string = project?.identifier ?? 'TSK' - function getProjectData (): Omit, 'type'> { + function getProjectData(): Omit, 'type'> { return { name, description, @@ -146,7 +146,7 @@ } } - function getRolesAssignment (): RolesAssignment { + function getRolesAssignment(): RolesAssignment { if (project === undefined || typeType?.targetClass === undefined || roles === undefined) { return {} } @@ -160,7 +160,7 @@ }, {}) } - async function updateProject (): Promise { + async function updateProject(): Promise { if (!project || typeType?.targetClass === undefined) { return } @@ -250,7 +250,7 @@ $: setDefaultMembers(typeType) - function setDefaultMembers (typeType: ProjectType | undefined): void { + function setDefaultMembers(typeType: ProjectType | undefined): void { if (typeType === undefined) return if (membersChanged) return if (project !== undefined) return @@ -259,7 +259,7 @@ members = typeType.members } - function findTaskTypes (typeId: Ref): TaskType[] { + function findTaskTypes(typeId: Ref): TaskType[] { return Array.from($taskTypeStore.values()).filter( (it) => it.parent === typeId && it.ofClass === tracker.class.Issue ) @@ -270,7 +270,7 @@ defaultStatus = sts?.[0] } - async function createProject (): Promise { + async function createProject(): Promise { const projectId = generateId() const projectData = getProjectData() if (typeId !== undefined && typeType !== undefined) { @@ -302,7 +302,7 @@ } } - function chooseIcon (ev: MouseEvent): void { + function chooseIcon(ev: MouseEvent): void { const update = (result: any) => { if (result !== undefined && result !== null) { icon = result.icon @@ -313,7 +313,7 @@ showPopup(IconPicker, { icon, color }, 'top', update, update) } - function close (id?: Ref): void { + function close(id?: Ref): void { dispatch('close', id) } @@ -323,7 +323,7 @@ projectsIdentifiers = new Set(res.map(({ identifier }) => identifier)) }) - function handleTypeChange (evt: CustomEvent>): void { + function handleTypeChange(evt: CustomEvent>): void { typeId = evt.detail defaultStatus = undefined } @@ -353,14 +353,14 @@ rolesQuery.unsubscribe() } - function handleOwnersChanged (newOwners: AccountUuid[]): void { + function handleOwnersChanged(newOwners: AccountUuid[]): void { owners = newOwners const newMembersSet = new Set([...members, ...newOwners]) members = Array.from(newMembersSet) } - function handleMembersChanged (newMembers: AccountUuid[]): void { + function handleMembersChanged(newMembers: AccountUuid[]): void { membersChanged = true // If a member was removed we need to remove it from any roles assignments as well const newMembersSet = new Set(newMembers) @@ -375,7 +375,7 @@ members = newMembers } - function handleRoleAssignmentChanged (roleId: Ref, newMembers: AccountUuid[]): void { + function handleRoleAssignmentChanged(roleId: Ref, newMembers: AccountUuid[]): void { if (rolesAssignment === undefined) { rolesAssignment = {} } diff --git a/plugins/tracker-resources/src/components/projects/ProjectSpacePresenter.svelte b/plugins/tracker-resources/src/components/projects/ProjectSpacePresenter.svelte index 17f004068b..57aeb055f2 100644 --- a/plugins/tracker-resources/src/components/projects/ProjectSpacePresenter.svelte +++ b/plugins/tracker-resources/src/components/projects/ProjectSpacePresenter.svelte @@ -29,11 +29,11 @@ export let currentSpecial: string | undefined export let getActions: (space: Project) => Promise = async () => [] export let deselect: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false let specials: SpecialNavModel[] = [] - async function updateSpecials (model: SpacesNavModel, space: Project): Promise { + async function updateSpecials(model: SpacesNavModel, space: Project): Promise { const newSpecials: SpecialNavModel[] = [] for (const sp of model.specials ?? []) { let shouldAdd = true @@ -55,7 +55,7 @@ } $: visible = (!deselect && currentSpace !== undefined && currentSpecial !== undefined && space._id === currentSpace) || - forciblyСollapsed + forciblyCollapsed {#if specials} @@ -75,7 +75,7 @@ highlighted={space._id === currentSpace} {visible} actions={() => getActions(space)} - {forciblyСollapsed} + {forciblyCollapsed} > {#each specials as special} @@ -93,7 +93,7 @@ {@const item = specials.find((sp) => sp.id === currentSpecial && currentSpace === space._id)} {#if item} - + {/if} {/if} diff --git a/plugins/tracker-resources/src/components/projects/WorkingDaysEditor.svelte b/plugins/tracker-resources/src/components/projects/WorkingDaysEditor.svelte index 504f643b8e..3e7cac206d 100644 --- a/plugins/tracker-resources/src/components/projects/WorkingDaysEditor.svelte +++ b/plugins/tracker-resources/src/components/projects/WorkingDaysEditor.svelte @@ -76,18 +76,18 @@ // All decision logic lives in the unit-tested lib helpers — the component // only maps events to assignments (kept trivially thin on purpose, since // there is no component test harness in this repo). - function setEnabled (on: boolean): void { + function setEnabled(on: boolean): void { value = enableWorkingDays(on) } - function onWeekday (bit: number): void { + function onWeekday(bit: number): void { if (value === undefined) return // toggleWeekdayBit keeps the last active day — at least one working day // must stay active (validated in the pure helper, disabled in the UI). value = { ...value, weekdayMask: toggleWeekdayBit(value.weekdayMask, bit) } } - function onDepartment (id: string): void { + function onDepartment(id: string): void { if (value === undefined) return value = applyDepartmentSelection(value, id, COMPANY_WIDE) } diff --git a/plugins/tracker-resources/src/components/templates/CreateIssueTemplate.svelte b/plugins/tracker-resources/src/components/templates/CreateIssueTemplate.svelte index 302ddc50fb..1d1767c190 100644 --- a/plugins/tracker-resources/src/components/templates/CreateIssueTemplate.svelte +++ b/plugins/tracker-resources/src/components/templates/CreateIssueTemplate.svelte @@ -71,15 +71,15 @@ $: canSave = getTitle(object.title ?? '').length > 0 - function getTitle (value: string) { + function getTitle(value: string) { return value.trim() } - export function canClose (): boolean { + export function canClose(): boolean { return !canSave } - async function createIssueTemplate () { + async function createIssueTemplate() { if (!canSave) { return } @@ -120,7 +120,7 @@ object = { ...object, milestone: milestoneId } } - function addTagRef (tag: TagElement): void { + function addTagRef(tag: TagElement): void { labels = [...labels, tag] } diff --git a/plugins/tracker-resources/src/components/templates/DraftIssueChildEditor.svelte b/plugins/tracker-resources/src/components/templates/DraftIssueChildEditor.svelte index 64fc96254a..a491391c49 100644 --- a/plugins/tracker-resources/src/components/templates/DraftIssueChildEditor.svelte +++ b/plugins/tracker-resources/src/components/templates/DraftIssueChildEditor.svelte @@ -62,7 +62,7 @@ let descriptionBox: AttachmentStyledBox - function getIssueDefaults (): IssueDraft { + function getIssueDefaults(): IssueDraft { return { _id: generateId(), title: '', @@ -92,7 +92,7 @@ milestone } - function objectChange (object: IssueDraft, empty: any) { + function objectChange(object: IssueDraft, empty: any) { if (shouldSaveDraft) { draftController.save(object, empty) } @@ -100,25 +100,25 @@ $: objectChange(object, empty) - function resetToDefaults () { + function resetToDefaults() { object = getIssueDefaults() focusIssueTitle?.() } - function getTitle (value: string) { + function getTitle(value: string) { return value.trim() } - export function removeDraft () { + export function removeDraft() { draftController.remove() } - function close () { + function close() { removeDraft() dispatch('close') } - async function createIssue () { + async function createIssue() { if (!canSave) { return } @@ -129,7 +129,7 @@ resetToDefaults() } - function tagAsRef (tag: TagElement): TagReference { + function tagAsRef(tag: TagElement): TagReference { return { _class: tags.class.TagReference, _id: generateId(), @@ -145,7 +145,7 @@ } } - function addTagRef (tag: TagElement): void { + function addTagRef(tag: TagElement): void { object.labels = [...object.labels, tagAsRef(tag)] } diff --git a/plugins/tracker-resources/src/components/templates/DraftIssueChildList.svelte b/plugins/tracker-resources/src/components/templates/DraftIssueChildList.svelte index 6cd2b66b98..12fabae47b 100644 --- a/plugins/tracker-resources/src/components/templates/DraftIssueChildList.svelte +++ b/plugins/tracker-resources/src/components/templates/DraftIssueChildList.svelte @@ -36,7 +36,7 @@ let draggingIndex: number | null = null let hoveringIndex: number | null = null - function openIssue (evt: MouseEvent, target: IssueDraft) { + function openIssue(evt: MouseEvent, target: IssueDraft) { showPopup( DraftIssueChildEditor, { @@ -59,12 +59,12 @@ ) } - function resetDrag () { + function resetDrag() { draggingIndex = null hoveringIndex = null } - function handleDragStart (ev: DragEvent, index: number) { + function handleDragStart(ev: DragEvent, index: number) { if (ev.dataTransfer) { ev.dataTransfer.effectAllowed = 'move' ev.dataTransfer.dropEffect = 'move' @@ -72,7 +72,7 @@ } } - function handleDrop (ev: DragEvent, toIndex: number) { + function handleDrop(ev: DragEvent, toIndex: number) { if (ev.dataTransfer && draggingIndex !== null && toIndex !== draggingIndex) { ev.dataTransfer.dropEffect = 'move' @@ -94,7 +94,7 @@ ) let currentProject: Project | undefined = undefined - function getIssueTemplateId (currentProject: Project | undefined, issue: IssueDraft): string { + function getIssueTemplateId(currentProject: Project | undefined, issue: IssueDraft): string { return currentProject ? `${currentProject.identifier}-${issues.findIndex((it) => it._id === issue._id)}` : `${issues.findIndex((it) => it._id === issue._id)}}` diff --git a/plugins/tracker-resources/src/components/templates/EditIssueTemplate.svelte b/plugins/tracker-resources/src/components/templates/EditIssueTemplate.svelte index 9aac5a5316..be8bfc4b90 100644 --- a/plugins/tracker-resources/src/components/templates/EditIssueTemplate.svelte +++ b/plugins/tracker-resources/src/components/templates/EditIssueTemplate.svelte @@ -50,7 +50,7 @@ const inboxClient = getResource(notification.function.GetInboxNotificationsClient).then((res) => res()) $: read(_id) - function read (_id: Ref): void { + function read(_id: Ref): void { if (lastId !== _id) { const prev = lastId lastId = _id @@ -91,7 +91,7 @@ let saved = false - async function save (): Promise { + async function save(): Promise { if (template === undefined || !canSave) { return } @@ -103,7 +103,7 @@ } } - function showContextMenu (ev: MouseEvent): void { + function showContextMenu(ev: MouseEvent): void { if (template !== undefined) { showMenu(ev, { object: template, excludedActions: [view.action.Open] }) } diff --git a/plugins/tracker-resources/src/components/templates/IssueTemplateChildEditor.svelte b/plugins/tracker-resources/src/components/templates/IssueTemplateChildEditor.svelte index b1405be5d0..b7de24143f 100644 --- a/plugins/tracker-resources/src/components/templates/IssueTemplateChildEditor.svelte +++ b/plugins/tracker-resources/src/components/templates/IssueTemplateChildEditor.svelte @@ -61,7 +61,7 @@ attr: client.getHierarchy().getAttribute(tracker.class.IssueTemplate, 'labels') } - function getIssueDefaults (): IssueTemplateChild { + function getIssueDefaults(): IssueTemplateChild { return { id: generateId(), title: '', @@ -74,25 +74,25 @@ } } - function resetToDefaults (): void { + function resetToDefaults(): void { newIssue = getIssueDefaults() labels = [] focusIssueTitle?.() } - function getTitle (value: string): string { + function getTitle(value: string): string { return value.trim() } - function close (): void { + function close(): void { dispatch('close') } - function onDelete (): void { + function onDelete(): void { dispatch('close', ['delete', newIssue]) } - function createIssue (): void { + function createIssue(): void { if (!canSave) { return } @@ -112,7 +112,7 @@ resetToDefaults() } - function addTagRef (tag: TagElement): void { + function addTagRef(tag: TagElement): void { labels = [...labels, tag] } diff --git a/plugins/tracker-resources/src/components/templates/IssueTemplateChildList.svelte b/plugins/tracker-resources/src/components/templates/IssueTemplateChildList.svelte index e64781aa5b..c0492942a3 100644 --- a/plugins/tracker-resources/src/components/templates/IssueTemplateChildList.svelte +++ b/plugins/tracker-resources/src/components/templates/IssueTemplateChildList.svelte @@ -37,7 +37,7 @@ let dragIndex: number | null = null let hoveringIndex: number | null = null - function openIssue (evt: MouseEvent, target: IssueTemplateChild): void { + function openIssue(evt: MouseEvent, target: IssueTemplateChild): void { showPopup( IssueTemplateChildEditor, { @@ -66,13 +66,13 @@ ) } - function resetDrag (): void { + function resetDrag(): void { dragId = null dragIndex = null hoveringIndex = null } - function handleDragStart (ev: DragEvent, index: number, item: IssueTemplateChild): void { + function handleDragStart(ev: DragEvent, index: number, item: IssueTemplateChild): void { if (ev.dataTransfer != null) { ev.dataTransfer.effectAllowed = 'move' ev.dataTransfer.dropEffect = 'move' @@ -81,7 +81,7 @@ } } - function handleDrop (ev: DragEvent, toIndex: number): void { + function handleDrop(ev: DragEvent, toIndex: number): void { if (ev.dataTransfer != null && dragIndex !== null && toIndex !== dragIndex) { ev.dataTransfer.dropEffect = 'move' @@ -103,7 +103,7 @@ ) let currentProject: Project | undefined = undefined - function getIssueTemplateId (currentProject: Project | undefined, issue: IssueTemplateChild): string { + function getIssueTemplateId(currentProject: Project | undefined, issue: IssueTemplateChild): string { return currentProject !== undefined ? `${currentProject.identifier}-${issues.findIndex((it) => it.id === issue.id)}` : `${issues.findIndex((it) => it.id === issue.id)}}` diff --git a/plugins/tracker-resources/src/components/templates/IssueTemplateChilds.svelte b/plugins/tracker-resources/src/components/templates/IssueTemplateChilds.svelte index 36ad96da1c..587fcec654 100644 --- a/plugins/tracker-resources/src/components/templates/IssueTemplateChilds.svelte +++ b/plugins/tracker-resources/src/components/templates/IssueTemplateChilds.svelte @@ -35,7 +35,7 @@ let isCollapsed = false let isCreating = false - function handleIssueSwap (ev: CustomEvent<{ id: Ref, toIndex: number }>): void { + function handleIssueSwap(ev: CustomEvent<{ id: Ref, toIndex: number }>): void { const { id, toIndex } = ev.detail const index = children.findIndex((p) => p.id === id) if (index !== -1 && index !== toIndex) { diff --git a/plugins/tracker-resources/src/components/templates/IssueTemplatePresenter.svelte b/plugins/tracker-resources/src/components/templates/IssueTemplatePresenter.svelte index 3852f8bec9..840860bc40 100644 --- a/plugins/tracker-resources/src/components/templates/IssueTemplatePresenter.svelte +++ b/plugins/tracker-resources/src/components/templates/IssueTemplatePresenter.svelte @@ -24,7 +24,7 @@ export let shouldShowAvatar: boolean = true export let inline: boolean = false - function handleIssueEditorOpened () { + function handleIssueEditorOpened() { if (disabled) { return } diff --git a/plugins/tracker-resources/src/components/templates/IssueTemplatesView.svelte b/plugins/tracker-resources/src/components/templates/IssueTemplatesView.svelte index 310d09b307..78d5bf31b7 100644 --- a/plugins/tracker-resources/src/components/templates/IssueTemplatesView.svelte +++ b/plugins/tracker-resources/src/components/templates/IssueTemplatesView.svelte @@ -20,7 +20,7 @@ let search = '' let searchQuery: DocumentQuery = { ...query } - function updateSearchQuery (search: string): void { + function updateSearchQuery(search: string): void { searchQuery = search === '' ? { ...query } : { ...query, $search: search } } $: updateSearchQuery(search) diff --git a/plugins/tracker-resources/src/components/templates/TemplateControlPanel.svelte b/plugins/tracker-resources/src/components/templates/TemplateControlPanel.svelte index faf3175312..18dbaaf483 100644 --- a/plugins/tracker-resources/src/components/templates/TemplateControlPanel.svelte +++ b/plugins/tracker-resources/src/components/templates/TemplateControlPanel.svelte @@ -35,7 +35,7 @@ let keys: KeyedAttribute[] = [] - function updateKeys (ignoreKeys: string[]): void { + function updateKeys(ignoreKeys: string[]): void { const filtredKeys = getFiltredKeys(hierarchy, issue._class, ignoreKeys) keys = filtredKeys.filter((key) => !isCollectionAttr(hierarchy, key)) } diff --git a/plugins/tracker-resources/src/index.ts b/plugins/tracker-resources/src/index.ts index 0dc6d9d682..8857c551d3 100644 --- a/plugins/tracker-resources/src/index.ts +++ b/plugins/tracker-resources/src/index.ts @@ -280,7 +280,7 @@ async function deleteIssue (issue: Issue | Issue[]): Promise { const deletingFromTargetIssuePage = objs.some((obj) => obj._id === target?._id) try { - await deleteObjects(getClient(), objs as unknown as Doc[]) + await deleteObjects(getClient(), objs) } catch (err: any) { Analytics.handleError(err) } diff --git a/plugins/tracker/.eslintrc.js b/plugins/tracker/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/tracker/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/tracker/eslint.config.mjs b/plugins/tracker/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/tracker/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/tracker/package.json b/plugins/tracker/package.json index 165c84528d..fd44a74faa 100644 --- a/plugins/tracker/package.json +++ b/plugins/tracker/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/training-assets/.eslintrc.js b/plugins/training-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/training-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/training-assets/eslint.config.mjs b/plugins/training-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/training-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/training-assets/package.json b/plugins/training-assets/package.json index f13aa6df96..89265eccb4 100644 --- a/plugins/training-assets/package.json +++ b/plugins/training-assets/package.json @@ -25,19 +25,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -53,8 +53,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/training-assets/src/lang.ts b/plugins/training-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/training-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/training-resources/.eslintrc.js b/plugins/training-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/training-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/training-resources/eslint.config.mjs b/plugins/training-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/training-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/training-resources/package.json b/plugins/training-resources/package.json index 1876eb697f..a3648a43f7 100644 --- a/plugins/training-resources/package.json +++ b/plugins/training-resources/package.json @@ -17,22 +17,21 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "prettier": "^3.6.2", "svelte-check": "^3.6.9", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/plugins/training-resources/src/components/NullablePositiveNumberEditor.svelte b/plugins/training-resources/src/components/NullablePositiveNumberEditor.svelte index 91f30d8dac..6000717449 100644 --- a/plugins/training-resources/src/components/NullablePositiveNumberEditor.svelte +++ b/plugins/training-resources/src/components/NullablePositiveNumberEditor.svelte @@ -21,11 +21,11 @@ const shown: boolean = false - function onEditBoxChange (event: Event): void { + function onEditBoxChange(event: Event): void { applyValue((event.target as HTMLInputElement).valueAsNumber) } - function applyValue (valueAsNumber: number): void { + function applyValue(valueAsNumber: number): void { let value: number | null = null if (Number.isFinite(valueAsNumber)) { value = Math.abs(Math.round(valueAsNumber)) diff --git a/plugins/training-resources/src/components/SentRequestCompletionPresenter.svelte b/plugins/training-resources/src/components/SentRequestCompletionPresenter.svelte index 1ab8aeff31..5ee7ed1c4c 100644 --- a/plugins/training-resources/src/components/SentRequestCompletionPresenter.svelte +++ b/plugins/training-resources/src/components/SentRequestCompletionPresenter.svelte @@ -53,7 +53,7 @@ ) } - function showDetails (event: Event): void { + function showDetails(event: Event): void { if (completionMap === null) { return } diff --git a/plugins/training-resources/src/components/Settings.svelte b/plugins/training-resources/src/components/Settings.svelte index 8c46007132..602458496a 100644 --- a/plugins/training-resources/src/components/Settings.svelte +++ b/plugins/training-resources/src/components/Settings.svelte @@ -71,7 +71,7 @@ ) } - async function onChange (roleId: Ref, members: AccountUuid[]): Promise { + async function onChange(roleId: Ref, members: AccountUuid[]): Promise { if (space === null || spaceType === null) { return } diff --git a/plugins/training-resources/src/components/TrainingAttemptPanel.svelte b/plugins/training-resources/src/components/TrainingAttemptPanel.svelte index c26c60d97c..2b10a43368 100644 --- a/plugins/training-resources/src/components/TrainingAttemptPanel.svelte +++ b/plugins/training-resources/src/components/TrainingAttemptPanel.svelte @@ -137,7 +137,7 @@ canCreateTrainingAttempt(trainingObject, request, latestOwnAttempt) } - function showContextMenu (evt: MouseEvent): void { + function showContextMenu(evt: MouseEvent): void { if (object !== null) { showMenu(evt, { object, @@ -146,7 +146,7 @@ } } - async function retakeTraining (): Promise { + async function retakeTraining(): Promise { if (trainingObject !== null && request !== null && canRetakeTraining) { await createTrainingAttempt(trainingObject, request, latestOwnAttempt) } diff --git a/plugins/training-resources/src/components/TrainingChangeOwnerPopup.svelte b/plugins/training-resources/src/components/TrainingChangeOwnerPopup.svelte index e45fca39f9..552c90f857 100644 --- a/plugins/training-resources/src/components/TrainingChangeOwnerPopup.svelte +++ b/plugins/training-resources/src/components/TrainingChangeOwnerPopup.svelte @@ -20,7 +20,7 @@ } let isSubmitting = false - async function okAction (): Promise { + async function okAction(): Promise { if (draft.owner === undefined) { return } @@ -33,7 +33,7 @@ let canSave = false $: canSave = canChangeOwner && !isSubmitting && draft.owner !== undefined && draft.owner !== object.owner - function onUpdate (key: KeyedAttribute | string, value: any): void { + function onUpdate(key: KeyedAttribute | string, value: any): void { const attrKey = typeof key === 'string' ? key : key.key draft[attrKey as keyof typeof draft] = value } diff --git a/plugins/training-resources/src/components/TrainingCreator.svelte b/plugins/training-resources/src/components/TrainingCreator.svelte index ce6d8f5657..71f0db34b3 100644 --- a/plugins/training-resources/src/components/TrainingCreator.svelte +++ b/plugins/training-resources/src/components/TrainingCreator.svelte @@ -24,7 +24,7 @@ let canSave = false $: canSave = canCreateTraining() && !isSubmitting && object.title.length > 0 - async function okAction (): Promise { + async function okAction(): Promise { isSubmitting = true await createTraining(object) isSubmitting = false diff --git a/plugins/training-resources/src/components/TrainingNotification.svelte b/plugins/training-resources/src/components/TrainingNotification.svelte index 77b242b66d..d2b255c622 100644 --- a/plugins/training-resources/src/components/TrainingNotification.svelte +++ b/plugins/training-resources/src/components/TrainingNotification.svelte @@ -39,7 +39,7 @@ } ) - function onClick (): void { + function onClick(): void { if (trainingObject === null) { return } diff --git a/plugins/training-resources/src/components/TrainingPanel.svelte b/plugins/training-resources/src/components/TrainingPanel.svelte index be0d570017..8b99514bf2 100644 --- a/plugins/training-resources/src/components/TrainingPanel.svelte +++ b/plugins/training-resources/src/components/TrainingPanel.svelte @@ -61,7 +61,7 @@ let modes: IModeSelector $: void setModes(object, _id) - async function setModes (trn: Training | null, id: Ref): Promise { + async function setModes(trn: Training | null, id: Ref): Promise { const config: IModeSelector['config'] = [] if (trn !== null) { if (await canViewTrainingOverview(trn)) { @@ -110,7 +110,7 @@ } } - function showContextMenu (evt: MouseEvent): void { + function showContextMenu(evt: MouseEvent): void { if (object !== null) { showMenu(evt, { object, diff --git a/plugins/training-resources/src/components/TrainingPanelOverview.svelte b/plugins/training-resources/src/components/TrainingPanelOverview.svelte index d6226a2fd7..4dcca926b3 100644 --- a/plugins/training-resources/src/components/TrainingPanelOverview.svelte +++ b/plugins/training-resources/src/components/TrainingPanelOverview.svelte @@ -21,7 +21,7 @@ $: void verifyRoute(object) - async function verifyRoute (trn: Training): Promise { + async function verifyRoute(trn: Training): Promise { if (!(await canViewTrainingOverview(trn))) { navigate(trainingRoute.build({ id: trn._id, tab: TrainingRouteTab.Overview }), true) } @@ -31,7 +31,7 @@ const hierarchy = getClient().getHierarchy() const descriptionAttr = hierarchy.getAttribute(training.class.Training, 'description') - function onDescriptionChange (e: CustomEvent): void { + function onDescriptionChange(e: CustomEvent): void { void getClient().updateDoc(object._class, object.space, object._id, { description: e.detail }) } diff --git a/plugins/training-resources/src/components/TrainingPassingScoreSlider.svelte b/plugins/training-resources/src/components/TrainingPassingScoreSlider.svelte index a5d31b494c..4283048843 100644 --- a/plugins/training-resources/src/components/TrainingPassingScoreSlider.svelte +++ b/plugins/training-resources/src/components/TrainingPassingScoreSlider.svelte @@ -14,7 +14,7 @@ let score: HTMLElement let isDragging = false - function onDragStart (event: DragEvent): void { + function onDragStart(event: DragEvent): void { if (readonly || event.dataTransfer === null) { return } @@ -22,7 +22,7 @@ event.dataTransfer.setDragImage(event.target as HTMLElement, 0, 0) } - function onDrag (event: MouseEvent): void { + function onDrag(event: MouseEvent): void { if (readonly) { return } @@ -33,7 +33,7 @@ object.passingScore = Math.round(Math.max(0, Math.min(100, ((event.clientX - rect.x) / rect.width) * 100))) } - function onDragEnd (event: MouseEvent): void { + function onDragEnd(event: MouseEvent): void { if (readonly) { return } @@ -42,7 +42,7 @@ void getClient().updateDoc(object._class, object.space, object._id, { passingScore: object.passingScore }) } - function onClick (event: MouseEvent): void { + function onClick(event: MouseEvent): void { if (readonly) { return } diff --git a/plugins/training-resources/src/components/TrainingRefEditor.svelte b/plugins/training-resources/src/components/TrainingRefEditor.svelte index d8518bcb65..e25878332a 100644 --- a/plugins/training-resources/src/components/TrainingRefEditor.svelte +++ b/plugins/training-resources/src/components/TrainingRefEditor.svelte @@ -44,7 +44,7 @@ } ) - async function onClick (event: MouseEvent): Promise { + async function onClick(event: MouseEvent): Promise { if (readonly) { return } diff --git a/plugins/training-resources/src/components/TrainingRequestChangeOwnerPopup.svelte b/plugins/training-resources/src/components/TrainingRequestChangeOwnerPopup.svelte index 955c53fb10..a20bf8e940 100644 --- a/plugins/training-resources/src/components/TrainingRequestChangeOwnerPopup.svelte +++ b/plugins/training-resources/src/components/TrainingRequestChangeOwnerPopup.svelte @@ -34,7 +34,7 @@ } let isSubmitting = false - async function okAction (): Promise { + async function okAction(): Promise { if (draft.owner === undefined) { return } @@ -47,7 +47,7 @@ let canSave = false $: canSave = canChangeOwner && !isSubmitting && draft.owner !== undefined && draft.owner !== object.owner - function onUpdate (key: KeyedAttribute | string, value: any): void { + function onUpdate(key: KeyedAttribute | string, value: any): void { const attrKey = typeof key === 'string' ? key : key.key draft[attrKey as keyof typeof draft] = value } diff --git a/plugins/training-resources/src/components/TrainingRequestCreator.svelte b/plugins/training-resources/src/components/TrainingRequestCreator.svelte index 0bf1178788..449307d080 100644 --- a/plugins/training-resources/src/components/TrainingRequestCreator.svelte +++ b/plugins/training-resources/src/components/TrainingRequestCreator.svelte @@ -22,13 +22,13 @@ (object.dueDate === null || object.dueDate > Date.now()) && (object.maxAttempts === null || object.maxAttempts > 0) - async function okAction (): Promise { + async function okAction(): Promise { isSubmitting = true await createTrainingRequest(parent, object) isSubmitting = false } - function onUpdate (key: KeyedAttribute | string, value: any): void { + function onUpdate(key: KeyedAttribute | string, value: any): void { const attrKey = typeof key === 'string' ? key : key.key object[attrKey as keyof typeof object] = value } diff --git a/plugins/training-resources/src/components/TrainingRequestPanel.svelte b/plugins/training-resources/src/components/TrainingRequestPanel.svelte index 234e741d75..3e1539c98f 100644 --- a/plugins/training-resources/src/components/TrainingRequestPanel.svelte +++ b/plugins/training-resources/src/components/TrainingRequestPanel.svelte @@ -105,19 +105,19 @@ canCreateTrainingAttempt(trainingObject, object, latestOwnAttempt) } - async function takeTraining (): Promise { + async function takeTraining(): Promise { if (trainingObject !== null && object !== null && canTakeTraining) { await createTrainingAttempt(trainingObject, object, latestOwnAttempt) } } - async function retakeTraining (): Promise { + async function retakeTraining(): Promise { if (trainingObject !== null && object !== null && canRetakeTraining) { await createTrainingAttempt(trainingObject, object, latestOwnAttempt) } } - async function openLatestAttempt (): Promise { + async function openLatestAttempt(): Promise { if (latestOwnAttempt !== null) { navigate( trainingAttemptRoute.build({ @@ -179,7 +179,7 @@ } } - function showContextMenu (evt: MouseEvent): void { + function showContextMenu(evt: MouseEvent): void { if (object !== null) { showMenu(evt, { object, diff --git a/plugins/training-resources/src/components/TrainingRequestRolesEditor.svelte b/plugins/training-resources/src/components/TrainingRequestRolesEditor.svelte index 8826cacf36..17073ad748 100644 --- a/plugins/training-resources/src/components/TrainingRequestRolesEditor.svelte +++ b/plugins/training-resources/src/components/TrainingRequestRolesEditor.svelte @@ -33,7 +33,7 @@ export let width: string | undefined = 'max-content' export let justify: 'left' | 'center' = 'left' - async function onClick (evt: Event): Promise { + async function onClick(evt: Event): Promise { showPopup( TrainingRequestRolesEditorPopup, { diff --git a/plugins/training-resources/src/routing/routes/trainingRequestRoute.ts b/plugins/training-resources/src/routing/routes/trainingRequestRoute.ts index 5460de2f84..7cabbd0bda 100644 --- a/plugins/training-resources/src/routing/routes/trainingRequestRoute.ts +++ b/plugins/training-resources/src/routing/routes/trainingRequestRoute.ts @@ -64,8 +64,8 @@ export const trainingRequestRoute: Route = { loc: { ...(isOwner ? sentRequestRoute.build({ - tab: object.canceledOn === null ? SentRequestsRouteTab.Active : SentRequestsRouteTab.Canceled - }) + tab: object.canceledOn === null ? SentRequestsRouteTab.Active : SentRequestsRouteTab.Canceled + }) : incomingRequestRoute.build({})), fragment: getPanelFragment(object) }, diff --git a/plugins/training-resources/src/utils/CompletionMap.ts b/plugins/training-resources/src/utils/CompletionMap.ts index ac678922d6..c8ca408aaa 100644 --- a/plugins/training-resources/src/utils/CompletionMap.ts +++ b/plugins/training-resources/src/utils/CompletionMap.ts @@ -37,13 +37,13 @@ export function compareCompletionMapValueState (a: CompletionMapValueState, b: C export type CompletionMapValue = | { - state: CompletionMapValueState.Pending - } + state: CompletionMapValueState.Pending + } | { - _id: TrainingAttempt['_id'] - seqNumber: TrainingAttempt['seqNumber'] - state: Exclude - } + _id: TrainingAttempt['_id'] + seqNumber: TrainingAttempt['seqNumber'] + state: Exclude + } export type CompletionMap = Map, CompletionMapValue> diff --git a/plugins/training-resources/src/utils/createTraining.ts b/plugins/training-resources/src/utils/createTraining.ts index 81529e50b9..706e67678b 100644 --- a/plugins/training-resources/src/utils/createTraining.ts +++ b/plugins/training-resources/src/utils/createTraining.ts @@ -13,7 +13,7 @@ import { getCurrentEmployeeRef } from './getCurrentEmployeeRef' import { getNextTrainingSeqNumber } from './getNextTrainingSeqNumber' export type CreateTrainingData = Required< -Omit + Omit > export async function createTraining (data: CreateTrainingData): Promise> { diff --git a/plugins/training-resources/src/utils/createTrainingRequest.ts b/plugins/training-resources/src/utils/createTrainingRequest.ts index f934b4b0db..4cccf2c310 100644 --- a/plugins/training-resources/src/utils/createTrainingRequest.ts +++ b/plugins/training-resources/src/utils/createTrainingRequest.ts @@ -13,7 +13,7 @@ import { trainingRequestRoute } from '../routing/routes/trainingRequestRoute' import { getCurrentEmployeeRef } from './getCurrentEmployeeRef' export type CreateTrainingRequestData = Required< -Omit, 'owner' | 'attempts' | 'canceledOn' | 'canceledBy'> & { roles: Array> } + Omit, 'owner' | 'attempts' | 'canceledOn' | 'canceledBy'> & { roles: Array> } > export async function createTrainingRequest ( diff --git a/plugins/training/.eslintrc.js b/plugins/training/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/training/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/training/eslint.config.mjs b/plugins/training/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/training/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/training/package.json b/plugins/training/package.json index cf68b7caa4..83c93f574c 100644 --- a/plugins/training/package.json +++ b/plugins/training/package.json @@ -21,19 +21,19 @@ "_phase:validate": "compile validate" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", diff --git a/plugins/uploader-assets/.eslintrc.js b/plugins/uploader-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/uploader-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/uploader-assets/eslint.config.mjs b/plugins/uploader-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/uploader-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/uploader-assets/package.json b/plugins/uploader-assets/package.json index 0a179c0f1d..c59ab36820 100644 --- a/plugins/uploader-assets/package.json +++ b/plugins/uploader-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/uploader-assets/src/lang.ts b/plugins/uploader-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/uploader-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/uploader-resources/.eslintrc.js b/plugins/uploader-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/uploader-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/uploader-resources/eslint.config.mjs b/plugins/uploader-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/uploader-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/uploader-resources/package.json b/plugins/uploader-resources/package.json index 2e38034383..e1b7373d3f 100644 --- a/plugins/uploader-resources/package.json +++ b/plugins/uploader-resources/package.json @@ -17,26 +17,25 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", - "jest": "^29.7.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", + "jest": "^30.4.2", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "sass": "^1.80.0", "svelte-check": "^3.6.9", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "svelte-loader": "^3.2.0", "svelte-preprocess": "^5.1.4", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/uploader-resources/src/components/FileUploadStatusBar.svelte b/plugins/uploader-resources/src/components/FileUploadStatusBar.svelte index b69f43efde..7ee5bdfd22 100644 --- a/plugins/uploader-resources/src/components/FileUploadStatusBar.svelte +++ b/plugins/uploader-resources/src/components/FileUploadStatusBar.svelte @@ -23,7 +23,7 @@ export let upload: Upload - function handleClick (ev: MouseEvent): void { + function handleClick(ev: MouseEvent): void { showPopup(FileUploadStatusPopup, { uploadId: upload.uuid }, ev.currentTarget as HTMLElement) } diff --git a/plugins/uploader-resources/src/components/FileUploadStatusPopup.svelte b/plugins/uploader-resources/src/components/FileUploadStatusPopup.svelte index 9197110306..cf3b4b3627 100644 --- a/plugins/uploader-resources/src/components/FileUploadStatusPopup.svelte +++ b/plugins/uploader-resources/src/components/FileUploadStatusPopup.svelte @@ -31,24 +31,24 @@ const dispatch = createEventDispatcher() let upload: Upload | undefined = undefined - function updateState (state: Map): void { + function updateState(state: Map): void { upload = state.get(uploadId) if (upload === undefined) { dispatch('close') } } - function handleCancelAll (): void { + function handleCancelAll(): void { upload?.files.forEach((element) => { element.cancel?.() }) } - function handleCancelFile (file: FileUpload): void { + function handleCancelFile(file: FileUpload): void { file.cancel?.() } - function handleRetryFile (file: FileUpload): void { + function handleRetryFile(file: FileUpload): void { void file.retry?.() } onMount(() => { diff --git a/plugins/uploader/.eslintrc.js b/plugins/uploader/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/uploader/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/uploader/eslint.config.mjs b/plugins/uploader/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/uploader/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/uploader/package.json b/plugins/uploader/package.json index 972e047a8a..c50de55e0a 100644 --- a/plugins/uploader/package.json +++ b/plugins/uploader/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/uploader/src/index.ts b/plugins/uploader/src/index.ts index ef370df4ba..5e08c4b844 100644 --- a/plugins/uploader/src/index.ts +++ b/plugins/uploader/src/index.ts @@ -15,7 +15,7 @@ import { uploaderId, uploaderPlugin } from './plugin' -export * from './types' +export type * from './types' export * from './utils' export { uploaderId } diff --git a/plugins/view-assets/.eslintrc.js b/plugins/view-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/view-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/view-assets/eslint.config.mjs b/plugins/view-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/view-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/view-assets/package.json b/plugins/view-assets/package.json index dbda69ac07..7f4ea4ae9e 100644 --- a/plugins/view-assets/package.json +++ b/plugins/view-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -55,8 +55,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/view-assets/src/lang.ts b/plugins/view-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/view-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/view-resources/.eslintrc.js b/plugins/view-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/view-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/view-resources/eslint.config.mjs b/plugins/view-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/view-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/view-resources/package.json b/plugins/view-resources/package.json index efbdbf6b97..e9686b2036 100644 --- a/plugins/view-resources/package.json +++ b/plugins/view-resources/package.json @@ -22,22 +22,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/view-resources/src/__tests__/objectIterator.test.ts b/plugins/view-resources/src/__tests__/objectIterator.test.ts index 5d59223a73..5997aa25c6 100644 --- a/plugins/view-resources/src/__tests__/objectIterator.test.ts +++ b/plugins/view-resources/src/__tests__/objectIterator.test.ts @@ -99,7 +99,7 @@ describe('ObjectIterator', () => { }) it('should return undefined for empty array', async () => { - mockObjects = [] as any + mockObjects = [] const query: DocumentQuery = { key: 'value' } const _class: Ref> = { id: 'class1' } as any const iterator = new ObjectIterator(_class, storeAdapter, { query }) diff --git a/plugins/view-resources/src/__tests__/query-builder.test.ts b/plugins/view-resources/src/__tests__/query-builder.test.ts index f5983e220c..01cae50086 100644 --- a/plugins/view-resources/src/__tests__/query-builder.test.ts +++ b/plugins/view-resources/src/__tests__/query-builder.test.ts @@ -58,7 +58,7 @@ describe('makeFilterQuery', () => { }) it('preserves base query fields untouched by the filters', async () => { - const base: DocumentQuery = { space: 'foo' as any, modifiedOn: 123 as any } + const base: DocumentQuery = { space: 'foo' as any, modifiedOn: 123 } const filters: Filter[] = [mockFilter('status', ['x'])] const out = await makeFilterQuery(base, filters, async () => mockMode, mockResolveResource as any) expect(out).toEqual({ space: 'foo', modifiedOn: 123, status: { $in: ['x'] } }) @@ -78,7 +78,7 @@ describe('makeFilterQuery', () => { // composing onto a base that already has a nested object at the filter's // target key — the resulting `out` must merge, but `base` must survive // unchanged. - const base: DocumentQuery = { status: { $in: ['initial'] } as any } + const base: DocumentQuery = { status: { $in: ['initial'] } } const baseSnapshot = JSON.parse(JSON.stringify(base)) const filters: Filter[] = [mockFilter('status', ['x'])] await makeFilterQuery(base, filters, async () => mockMode, mockResolveResource as any) @@ -87,7 +87,7 @@ describe('makeFilterQuery', () => { it('ignores prototype-polluting keys in filter results and filter keys', async () => { const polluted = JSON.parse('{"$in": ["a"], "__proto__": {"polluted": true}, "constructor": {"x": 1}}') const resolvePolluted = jest.fn(async () => async () => polluted) - const base: DocumentQuery = { status: { $in: ['a', 'b'] } as any } + const base: DocumentQuery = { status: { $in: ['a', 'b'] } } const filters: Filter[] = [mockFilter('status', [], 1), mockFilter('__proto__', [], 2)] const out = await makeFilterQuery(base, filters, async () => mockMode, resolvePolluted as any) expect(out).toEqual({ status: { $in: ['a'] } }) diff --git a/plugins/view-resources/src/actionImpl.ts b/plugins/view-resources/src/actionImpl.ts index 92f492df0b..e539130edf 100644 --- a/plugins/view-resources/src/actionImpl.ts +++ b/plugins/view-resources/src/actionImpl.ts @@ -345,10 +345,10 @@ async function Open ( doc: Doc, evt: Event, props: - | { - component?: AnyComponent - } - | undefined + | { + component?: AnyComponent + } + | undefined ): Promise { evt.preventDefault() const d = Array.isArray(doc) ? doc[0] : doc @@ -364,10 +364,10 @@ async function OpenInNewTab ( doc: Doc, evt: Event, props: - | { - component?: AnyComponent - } - | undefined + | { + component?: AnyComponent + } + | undefined ): Promise { evt.preventDefault() const d = Array.isArray(doc) ? doc[0] : doc diff --git a/plugins/view-resources/src/components/ActionHandler.svelte b/plugins/view-resources/src/components/ActionHandler.svelte index 81a9f5479d..1580a3a31e 100644 --- a/plugins/view-resources/src/components/ActionHandler.svelte +++ b/plugins/view-resources/src/components/ActionHandler.svelte @@ -45,7 +45,7 @@ let delayedAction: (() => Promise) | undefined let timer: any | undefined - function getCurrentActions ( + function getCurrentActions( context: { mode: ViewContextType application?: Ref @@ -69,7 +69,7 @@ const isMac = /Macintosh/i.test(navigator.userAgent) - function keyPrefix (key: KeyboardEvent): string { + function keyPrefix(key: KeyboardEvent): string { return ( (key.altKey ? 'Alt + ' : '') + (key.shiftKey ? 'Shift + ' : '') + @@ -77,18 +77,18 @@ (key.ctrlKey ? (isMac ? 'Ctrl + ' : 'Meta + ') : '') ) } - function m (s1: string, s2: string): boolean { + function m(s1: string, s2: string): boolean { return s1 === s2 } - function findKeySequence (pattern: string, key: KeyboardEvent): boolean { + function findKeySequence(pattern: string, key: KeyboardEvent): boolean { const lc = pattern.toLowerCase() const pfp = (keyPrefix(key) + key.key).toLowerCase() const pfp2 = (keyPrefix(key) + key.code).toLowerCase() return lc.startsWith(`${pfp}->`) || lc.startsWith(`${pfp2}->`) } - function getSequences ( + function getSequences( key: KeyboardEvent, currentActions: Array>> ): Array>> { @@ -96,7 +96,7 @@ return res } - function matchKeySequence (key: KeyboardEvent, pattern: string, lastKey: KeyboardEvent): boolean { + function matchKeySequence(key: KeyboardEvent, pattern: string, lastKey: KeyboardEvent): boolean { const fp = (keyPrefix(key) + key.key).toLowerCase() const fp2 = (keyPrefix(key) + key.code).toLowerCase() const lc = pattern.toLowerCase() @@ -106,7 +106,7 @@ return m(`${pfp}->${fp}`, lc) || m(`${pfp2}->${fp}`, lc) || m(`${pfp}->${fp2}`, lc) || m(`${pfp2}->${fp2}`, lc) } - function matchKey (key: KeyboardEvent, pattern: string): boolean { + function matchKey(key: KeyboardEvent, pattern: string): boolean { const fp = (keyPrefix(key) + key.key).toLowerCase() const fp2 = (keyPrefix(key) + key.code).toLowerCase() const lc = pattern.toLowerCase() @@ -116,7 +116,7 @@ let currentElement: EventTarget | null = null let currentActions: Action[] | undefined = undefined - function clearActions (doc: any) { + function clearActions(doc: any) { currentActions = undefined } @@ -132,7 +132,7 @@ $: disableActions = $restrictionStore.disableActions - function handleKeys (evt: KeyboardEvent): void { + function handleKeys(evt: KeyboardEvent): void { // For none we ignore all actions. if (disableActions || ctx?.mode === 'none') return const targetTagName = (evt.target as any)?.tagName?.toLowerCase() @@ -174,7 +174,7 @@ clearTimeout(timer) - async function activateAction (a: Action): Promise { + async function activateAction(a: Action): Promise { const action = await getResource(a.action) if (action === undefined) return diff --git a/plugins/view-resources/src/components/ActionsPopup.svelte b/plugins/view-resources/src/components/ActionsPopup.svelte index 0b11ffed81..9672f47e44 100644 --- a/plugins/view-resources/src/components/ActionsPopup.svelte +++ b/plugins/view-resources/src/components/ActionsPopup.svelte @@ -87,7 +87,7 @@ let supportedActions: Array> = [] let filteredActions: Array> = [] - async function filterVisibleActions ( + async function filterVisibleActions( actions: Array>, docs: Doc[] ): Promise>> { @@ -166,7 +166,7 @@ let activeAction: Action | undefined - async function handleSelection (evt: Event, selection: number): Promise { + async function handleSelection(evt: Event, selection: number): Promise { const item = items[selection] if (item == null) { return @@ -202,7 +202,7 @@ } } - function onKeydown (key: KeyboardEvent): void { + function onKeydown(key: KeyboardEvent): void { if (key.code === 'ArrowUp') { key.stopPropagation() key.preventDefault() @@ -230,7 +230,7 @@ actionCategory?: ActionCategory | WithLookup } - function packSearchAndActions ( + function packSearchAndActions( searchItems: SearchItem[], filteredActions: Array> ): SearchActionItem[] { @@ -262,7 +262,7 @@ $: void updateItems(search, filteredActions) - function txListener (txes: Tx[]): void { + function txListener(txes: Tx[]): void { if ( txes.some( (it) => @@ -284,7 +284,7 @@ let phTraslate: string = '' let autoFocus = !$deviceOptionsStore.isMobile - export function focus (): void { + export function focus(): void { textHTML.focus() autoFocus = false } @@ -297,7 +297,7 @@ }) let timer: any $: _search = search - function restartTimer (): void { + function restartTimer(): void { clearTimeout(timer) timer = setTimeout(() => { search = _search diff --git a/plugins/view-resources/src/components/ArrayEditor.svelte b/plugins/view-resources/src/components/ArrayEditor.svelte index 2e35be804e..2ae71b8c08 100644 --- a/plugins/view-resources/src/components/ArrayEditor.svelte +++ b/plugins/view-resources/src/components/ArrayEditor.svelte @@ -14,7 +14,7 @@ $: _clazz = (type.of as RefTo).to const client = getClient() const hierarchy = client.getHierarchy() - function openPopup (event: MouseEvent) { + function openPopup(event: MouseEvent) { showPopup( ArrayEditorPopup, { diff --git a/plugins/view-resources/src/components/ArrayEditorPopup.svelte b/plugins/view-resources/src/components/ArrayEditorPopup.svelte index 49126c7582..c31cf57de8 100644 --- a/plugins/view-resources/src/components/ArrayEditorPopup.svelte +++ b/plugins/view-resources/src/components/ArrayEditorPopup.svelte @@ -14,7 +14,7 @@ const dispatch = createEventDispatcher() - async function onUpdate ({ detail }: CustomEvent[] | null | undefined>) { + async function onUpdate({ detail }: CustomEvent[] | null | undefined>) { dispatch('update', detail) } diff --git a/plugins/view-resources/src/components/AssociationPresenter.svelte b/plugins/view-resources/src/components/AssociationPresenter.svelte index b40a9d7c39..41c91d03eb 100644 --- a/plugins/view-resources/src/components/AssociationPresenter.svelte +++ b/plugins/view-resources/src/components/AssociationPresenter.svelte @@ -23,7 +23,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function getClassLabel (_class: Ref>): IntlString { + function getClassLabel(_class: Ref>): IntlString { try { const _classLabel = hierarchy.getClass(_class) return _classLabel.label diff --git a/plugins/view-resources/src/components/ClassAttributeBar.svelte b/plugins/view-resources/src/components/ClassAttributeBar.svelte index 63f8a20e58..d214117207 100644 --- a/plugins/view-resources/src/components/ClassAttributeBar.svelte +++ b/plugins/view-resources/src/components/ClassAttributeBar.svelte @@ -36,7 +36,7 @@ let keys: KeyedAttribute[] = [] - function updateKeys (_class: Ref>, ignoreKeys: string[], to: Ref> | undefined): void { + function updateKeys(_class: Ref>, ignoreKeys: string[], to: Ref> | undefined): void { const filtredKeys = getFiltredKeys(hierarchy, _class, ignoreKeys, to) keys = filtredKeys .filter((key) => !isCollectionAttr(hierarchy, key) || allowedCollections.includes(key.key)) @@ -58,7 +58,7 @@ $: label = showLabel ?? hierarchy.getClass(_class).label - function getCollapsed (_class: Ref>, nonEmpty?: KeyedAttribute): boolean { + function getCollapsed(_class: Ref>, nonEmpty?: KeyedAttribute): boolean { return nonEmpty === undefined } diff --git a/plugins/view-resources/src/components/DocNavLink.svelte b/plugins/view-resources/src/components/DocNavLink.svelte index 9ab21a0569..358e9f9971 100644 --- a/plugins/view-resources/src/components/DocNavLink.svelte +++ b/plugins/view-resources/src/components/DocNavLink.svelte @@ -58,7 +58,7 @@ ? '#' + getPanelURI(component, object._id, Hierarchy.mixinOrClass(object), 'content') : undefined - async function getHref (object: Doc): Promise { + async function getHref(object: Doc): Promise { if (_disabled) { href = undefined return @@ -75,7 +75,7 @@ $: if (object !== undefined) getHref(object) - function onBrokenLinkClick (event: MouseEvent): void { + function onBrokenLinkClick(event: MouseEvent): void { showPopup(MessageBox, { label: presentation.string.UnableToFollowMention, message: presentation.string.AccessDenied, diff --git a/plugins/view-resources/src/components/DocTable.svelte b/plugins/view-resources/src/components/DocTable.svelte index 653b03e78d..9a7edac3fe 100644 --- a/plugins/view-resources/src/components/DocTable.svelte +++ b/plugins/view-resources/src/components/DocTable.svelte @@ -49,7 +49,7 @@ $: uniqueObjects = deduplicate(objects) - function deduplicate (list: Doc[] | undefined): Doc[] { + function deduplicate(list: Doc[] | undefined): Doc[] { if (!list) return [] const seen = new Set() return list.filter((item) => { @@ -64,7 +64,7 @@ $: viewlet = getViewlet(_class) - function getViewlet (_class: Ref>): Viewlet | undefined { + function getViewlet(_class: Ref>): Viewlet | undefined { let clazz: Ref> | undefined = _class while (true) { const res = client.getModel().findAllSync(view.class.Viewlet, { attachTo: clazz }) @@ -91,7 +91,7 @@ } } - function onRow (object: Doc): void { + function onRow(object: Doc): void { dispatch('row-focus', object) } @@ -117,7 +117,7 @@ return { ...attribute.props, space: object.space, ...readonlyParams } } - function getValue (attribute: AttributeModel, object: Doc): any { + function getValue(attribute: AttributeModel, object: Doc): any { if (attribute.castRequest) { return getObjectValue( attribute.key.substring(attribute.castRequest.length + 1), @@ -127,11 +127,11 @@ return getObjectValue(attribute.key, object) } - function onChange (value: any, doc: Doc, key: string, attribute: AnyAttribute) { + function onChange(value: any, doc: Doc, key: string, attribute: AnyAttribute) { updateAttribute(client, doc, _class, { key, attr: attribute }, value) } - function getOnChange (doc: Doc, attribute: AttributeModel) { + function getOnChange(doc: Doc, attribute: AttributeModel) { const attr = attribute.attribute if (attr === undefined) return if (attribute.collectionAttr) return @@ -147,7 +147,7 @@ let model: AttributeModel[] | undefined let modelOptions: BuildModelOptions | undefined - const updateModelOptions = reduceCalls(async function updateModelOptions ( + const updateModelOptions = reduceCalls(async function updateModelOptions( client: TxOperations, _class: Ref>, keys: Array @@ -160,14 +160,14 @@ }) $: void updateModelOptions(client, _class, config) - async function build (modelOptions: BuildModelOptions): Promise { + async function build(modelOptions: BuildModelOptions): Promise { isBuildingModel = true const res = await buildModel(modelOptions) model = res isBuildingModel = false } - function contextHandler (object: Doc, row: number): (ev: MouseEvent) => void { + function contextHandler(object: Doc, row: number): (ev: MouseEvent) => void { return (ev) => { if (!readonly) { void showContextMenu(ev, object, row) @@ -181,7 +181,7 @@ permissionsStore = await getResource(contact.store.Permissions) }) - function canChangeAttr ( + function canChangeAttr( object: Doc, attr: AnyAttribute | undefined, permissionsStore: PermissionsStore | undefined @@ -191,7 +191,7 @@ return canChangeAttribute(attr, object.space as Ref, permissionsStore, object._class) } - async function canEdit (object: Doc): Promise { + async function canEdit(object: Doc): Promise { if (client.getHierarchy().isDerived(object._class, core.class.Space)) { return await canEditSpace(object) } diff --git a/plugins/view-resources/src/components/DocsNavigator.svelte b/plugins/view-resources/src/components/DocsNavigator.svelte index 6df72fb0b5..5e24626f22 100644 --- a/plugins/view-resources/src/components/DocsNavigator.svelte +++ b/plugins/view-resources/src/components/DocsNavigator.svelte @@ -23,7 +23,7 @@ const client = getClient() - async function getBreadcrumbsModels (elements: readonly Doc[]): Promise { + async function getBreadcrumbsModels(elements: readonly Doc[]): Promise { if (elements.length === 0) { return [] } diff --git a/plugins/view-resources/src/components/EditBoxPopup.svelte b/plugins/view-resources/src/components/EditBoxPopup.svelte index 2b789045fc..8b2a3897ef 100644 --- a/plugins/view-resources/src/components/EditBoxPopup.svelte +++ b/plugins/view-resources/src/components/EditBoxPopup.svelte @@ -29,7 +29,7 @@ const dispatch = createEventDispatcher() - function _onkeypress (ev: KeyboardEvent) { + function _onkeypress(ev: KeyboardEvent) { if (ev.key === 'Enter') dispatch('close', value) } diff --git a/plugins/view-resources/src/components/EditDoc.svelte b/plugins/view-resources/src/components/EditDoc.svelte index 03e2d16870..65c2fcc798 100644 --- a/plugins/view-resources/src/components/EditDoc.svelte +++ b/plugins/view-resources/src/components/EditDoc.svelte @@ -63,7 +63,7 @@ $: read(objectId) - function read (_id?: Ref): void { + function read(_id?: Ref): void { if (objectId && lastId && lastId !== _id) { const prev = lastId lastId = _id @@ -83,7 +83,7 @@ const query = createQuery() $: updateQuery(objectId, _class) - function updateQuery (_id?: Ref, _class?: Ref>): void { + function updateQuery(_id?: Ref, _class?: Ref>): void { if (_id && _class) { query.query(_class, { _id }, (result) => { object = result[0] @@ -122,7 +122,7 @@ $: mixins = getDocMixins(object, showAllMixins, ignoreMixins, realObjectClass) let attr: Promise | undefined - async function updateKeys (): Promise { + async function updateKeys(): Promise { if (attr instanceof Promise) { await attr } @@ -138,14 +138,14 @@ pinned?: boolean } - function getEditor (_class: Ref>): MixinEditor { + function getEditor(_class: Ref>): MixinEditor { const clazz = hierarchy.getClass(_class) const editorMixin = hierarchy.as(clazz, view.mixin.ObjectEditor) if (editorMixin?.editor == null && clazz.extends != null) return getEditor(clazz.extends) return { editor: editorMixin.editor, pinned: editorMixin?.pinned } } - function getEditorFooter ( + function getEditorFooter( _class: Ref>, object?: Doc ): { footer: AnyComponent, props?: Record } | undefined { @@ -159,7 +159,7 @@ return undefined } - function getPanelFooter ( + function getPanelFooter( _class: Ref>, object?: Doc ): { footer: AnyComponent, props?: Record } | undefined { @@ -197,7 +197,7 @@ }) } - function getHeaderEditor (_class: Ref>): AnyComponent | undefined { + function getHeaderEditor(_class: Ref>): AnyComponent | undefined { const editorMixin = hierarchy.classHierarchyMixin( _class, view.mixin.ObjectEditorHeader, @@ -215,7 +215,7 @@ let panelWidth: number = 0 let innerWidth: number = 0 - function handleOpen (ev: CustomEvent): void { + function handleOpen(ev: CustomEvent): void { ignoreKeys = ev.detail.ignoreKeys activityOptions = ev.detail.activityOptions ?? activityOptions ignoreMixins = new Set(ev.detail.ignoreMixins) diff --git a/plugins/view-resources/src/components/FixedColumn.svelte b/plugins/view-resources/src/components/FixedColumn.svelte index 6f6ba38f6f..16af5ac3fa 100644 --- a/plugins/view-resources/src/components/FixedColumn.svelte +++ b/plugins/view-resources/src/components/FixedColumn.svelte @@ -38,7 +38,7 @@ } }) - function resize (element: Element) { + function resize(element: Element) { cWidth = element.clientWidth if (cWidth > ($fixedWidthStore[key] ?? 0)) $fixedWidthStore[key] = cWidth } diff --git a/plugins/view-resources/src/components/IdPresenter.svelte b/plugins/view-resources/src/components/IdPresenter.svelte index adc6187e72..a08a678f4c 100644 --- a/plugins/view-resources/src/components/IdPresenter.svelte +++ b/plugins/view-resources/src/components/IdPresenter.svelte @@ -28,7 +28,7 @@ const client = getClient() const h = client.getHierarchy() - function getTooltip (value: string | undefined): LabelAndProps | undefined { + function getTooltip(value: string | undefined): LabelAndProps | undefined { if (value === undefined) return return { label: getEmbeddedLabel(value) diff --git a/plugins/view-resources/src/components/LinkPresenter.svelte b/plugins/view-resources/src/components/LinkPresenter.svelte index 3bf0709604..0befa7902c 100644 --- a/plugins/view-resources/src/components/LinkPresenter.svelte +++ b/plugins/view-resources/src/components/LinkPresenter.svelte @@ -21,7 +21,7 @@ const client = getClient() - async function getPresenter (href: string): Promise { + async function getPresenter(href: string): Promise { const presenters = await client.findAll(view.class.LinkPresenter, {}) for (const presenter of presenters) { if (new RegExp(presenter.pattern).test(href)) { diff --git a/plugins/view-resources/src/components/MarkupDiffPresenter.svelte b/plugins/view-resources/src/components/MarkupDiffPresenter.svelte index f756ec3753..f7be686c62 100644 --- a/plugins/view-resources/src/components/MarkupDiffPresenter.svelte +++ b/plugins/view-resources/src/components/MarkupDiffPresenter.svelte @@ -30,7 +30,7 @@ $: content = markupToJSON(value ?? EmptyMarkup) $: comparedVersion = markupToJSON(prevValue ?? EmptyMarkup) - function cleanup (node1: MarkupNode, node2: MarkupNode): MarkupNode[] { + function cleanup(node1: MarkupNode, node2: MarkupNode): MarkupNode[] { if (node1.type !== MarkupNodeType.doc || node2.type !== MarkupNodeType.doc) { return [node1, node2] } @@ -57,7 +57,7 @@ ] } - function same (node1: MarkupNode | undefined, node2: MarkupNode | undefined): boolean { + function same(node1: MarkupNode | undefined, node2: MarkupNode | undefined): boolean { if (node1 === undefined && node2 === undefined) return true if (node1 === undefined || node2 === undefined) return false diff --git a/plugins/view-resources/src/components/Move.svelte b/plugins/view-resources/src/components/Move.svelte index 5532ecfd2e..9d513e6b54 100644 --- a/plugins/view-resources/src/components/Move.svelte +++ b/plugins/view-resources/src/components/Move.svelte @@ -46,7 +46,7 @@ } $: _class && translate(_class, {}, $themeStore.language).then((res) => (classLabel = res.toLocaleLowerCase())) - async function move (doc: Doc): Promise { + async function move(doc: Doc): Promise { const op = client.apply(undefined, 'move-to-space') const needRank = currentSpace ? hierarchy.isDerived(currentSpace._class, task.class.Project) : false if (needRank) { @@ -71,11 +71,11 @@ dispatch('close') } - async function getSpace (): Promise { + async function getSpace(): Promise { return await client.findOne(core.class.Space, { _id: space }).then((res) => (currentSpace = res)) } - async function invokeValidate ( + async function invokeValidate( doc: Doc, action: Resource<(doc: T, client: Client) => Promise> ): Promise { @@ -83,7 +83,7 @@ return await impl(doc, client) } - async function validate (doc: Doc, _class: Ref>): Promise { + async function validate(doc: Doc, _class: Ref>): Promise { const clazz = hierarchy.getClass(_class) const validatorMixin = hierarchy.as(clazz, view.mixin.ObjectValidator) if (validatorMixin?.validator != null) { diff --git a/plugins/view-resources/src/components/NumberEditor.svelte b/plugins/view-resources/src/components/NumberEditor.svelte index aa6569f2db..c42b1a8168 100644 --- a/plugins/view-resources/src/components/NumberEditor.svelte +++ b/plugins/view-resources/src/components/NumberEditor.svelte @@ -33,7 +33,7 @@ let shown: boolean = false - function _onchange (ev: Event) { + function _onchange(ev: Event) { const value = (ev.target as HTMLInputElement).valueAsNumber if (Number.isFinite(value)) { onChange(value) diff --git a/plugins/view-resources/src/components/ObjectBox.svelte b/plugins/view-resources/src/components/ObjectBox.svelte index 6ee7e3c31e..09af394890 100644 --- a/plugins/view-resources/src/components/ObjectBox.svelte +++ b/plugins/view-resources/src/components/ObjectBox.svelte @@ -71,7 +71,7 @@ const client = getClient() - async function updateSelected ( + async function updateSelected( _value: Ref | null | undefined, docQuery: DocumentQuery | undefined = undefined ): Promise { diff --git a/plugins/view-resources/src/components/ObjectIcon.svelte b/plugins/view-resources/src/components/ObjectIcon.svelte index 0500999fba..2b0590bb39 100644 --- a/plugins/view-resources/src/components/ObjectIcon.svelte +++ b/plugins/view-resources/src/components/ObjectIcon.svelte @@ -30,7 +30,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function getObjectIcon (value: Doc): Asset | undefined { + function getObjectIcon(value: Doc): Asset | undefined { if (!withObjectIcon) return undefined return (value as any)?.icon } diff --git a/plugins/view-resources/src/components/ObjectMention.svelte b/plugins/view-resources/src/components/ObjectMention.svelte index 1aec343bca..20572c3ac2 100644 --- a/plugins/view-resources/src/components/ObjectMention.svelte +++ b/plugins/view-resources/src/components/ObjectMention.svelte @@ -64,7 +64,7 @@ $: void updateParentDoc(doc, _class) - async function updateParentDoc (doc: Doc | undefined, _class: Ref> | undefined): Promise { + async function updateParentDoc(doc: Doc | undefined, _class: Ref> | undefined): Promise { const resultClass = doc?._class ?? _class if (resultClass == null) { parentDoc = undefined @@ -91,14 +91,14 @@ $: void updateDocTooltip(doc) $: void updateDocLabel(parentDoc ?? doc, _class) - function getIcon (doc: Doc | undefined): any { + function getIcon(doc: Doc | undefined): any { if (doc == null) return undefined if (hierarchy.isDerived(doc._class, contact.class.Contact)) return undefined return classIcon(client, doc._class) } - function getPanelComponent (doc?: Doc, _class?: Ref>): AnyComponent { + function getPanelComponent(doc?: Doc, _class?: Ref>): AnyComponent { if (component !== undefined) return component const resultClass = doc?._class ?? _class @@ -117,7 +117,7 @@ } } - async function updateDocLabel (doc?: Doc, _class?: Ref>): Promise { + async function updateDocLabel(doc?: Doc, _class?: Ref>): Promise { const resultClass = doc?._class ?? _class if (resultClass != null) { @@ -129,11 +129,11 @@ } } - async function updateDocTitle (doc: Doc | undefined): Promise { + async function updateDocTitle(doc: Doc | undefined): Promise { docTitle = doc ? await getReferenceLabel(doc._class, doc._id, doc) : undefined } - async function updateDocTooltip (doc?: Doc): Promise { + async function updateDocTooltip(doc?: Doc): Promise { if (doc === undefined) { docTooltip = {} return diff --git a/plugins/view-resources/src/components/ObjectSearchBox.svelte b/plugins/view-resources/src/components/ObjectSearchBox.svelte index f5003a3bfd..139242c308 100644 --- a/plugins/view-resources/src/components/ObjectSearchBox.svelte +++ b/plugins/view-resources/src/components/ObjectSearchBox.svelte @@ -73,7 +73,7 @@ const client = getClient() - async function updateSelected (value: Ref | null | undefined) { + async function updateSelected(value: Ref | null | undefined) { selected = value ? await client.findOne(_class, { _id: value }) : undefined } diff --git a/plugins/view-resources/src/components/ParentsNavigator.svelte b/plugins/view-resources/src/components/ParentsNavigator.svelte index 4fbe8acf47..c821d954a8 100644 --- a/plugins/view-resources/src/components/ParentsNavigator.svelte +++ b/plugins/view-resources/src/components/ParentsNavigator.svelte @@ -23,23 +23,23 @@ const client = getClient() - function hasParent (doc: Doc | AttachedDoc): boolean { + function hasParent(doc: Doc | AttachedDoc): boolean { return 'parent' in doc && doc.parent != null } - function getParentId (doc: Doc | AttachedDoc): Ref { + function getParentId(doc: Doc | AttachedDoc): Ref { return isAttachedDoc(doc) ? doc.attachedTo : (doc as any).parent } - function getParentClass (doc: Doc | AttachedDoc): Ref> { + function getParentClass(doc: Doc | AttachedDoc): Ref> { return isAttachedDoc(doc) ? doc.attachedToClass : client.getHierarchy().getParentClass(doc._class) } - function withParent (doc: Doc | AttachedDoc): boolean { + function withParent(doc: Doc | AttachedDoc): boolean { return isAttachedDoc(doc) || hasParent(doc) } - async function getParents (_id: Ref, _class: Ref>, showParents: boolean): Promise { + async function getParents(_id: Ref, _class: Ref>, showParents: boolean): Promise { if (!showParents) { return [] } diff --git a/plugins/view-resources/src/components/ReadOnlyNotification.svelte b/plugins/view-resources/src/components/ReadOnlyNotification.svelte index e72d4577c8..d5b408376e 100644 --- a/plugins/view-resources/src/components/ReadOnlyNotification.svelte +++ b/plugins/view-resources/src/components/ReadOnlyNotification.svelte @@ -8,7 +8,7 @@ export let onRemove: () => void export let notification: Notification - function joinWorkspace (e: MouseEvent): void { + function joinWorkspace(e: MouseEvent): void { navigate({ path: ['login', 'join'], query: { workspace: getCurrentWorkspaceUrl() } }) } diff --git a/plugins/view-resources/src/components/RelationEditor.svelte b/plugins/view-resources/src/components/RelationEditor.svelte index 7b22f314f8..d01992c9c4 100644 --- a/plugins/view-resources/src/components/RelationEditor.svelte +++ b/plugins/view-resources/src/components/RelationEditor.svelte @@ -25,7 +25,7 @@ $: uniqueDocs = deduplicate(docs) - function deduplicate (list: Doc[] | undefined): Doc[] { + function deduplicate(list: Doc[] | undefined): Doc[] { if (!list) return [] const seen = new Set() return list.filter((item) => { @@ -36,7 +36,7 @@ }) } - function getCreate (): ObjectCreate | undefined { + function getCreate(): ObjectCreate | undefined { const factory = client.getHierarchy().classHierarchyMixin(_class, view.mixin.ObjectFactory) if (factory) { const usePopup = isBaseCardTypeWithSubtypes() @@ -49,7 +49,7 @@ } } - function isBaseCardTypeWithSubtypes (): boolean { + function isBaseCardTypeWithSubtypes(): boolean { const hierarchy = client.getHierarchy() if (!hierarchy.isDerived(_class, card.class.Card)) return false @@ -63,7 +63,7 @@ }) } - function add (): void { + function add(): void { const create = getCreate() const isVersionable = client.getHierarchy().classHierarchyMixin(_class, core.mixin.VersionableClass) !== undefined const baseQuery = { _id: { $nin: uniqueDocs.map((p) => p._id) } } @@ -104,7 +104,7 @@ : !p.key.includes('$lookup') && !p.key.startsWith('@') ) - async function onContextMenu (ev: MouseEvent, doc: Doc): Promise { + async function onContextMenu(ev: MouseEvent, doc: Doc): Promise { const q = direction === 'B' ? { docA: object._id, docB: doc._id, association: association._id } @@ -126,7 +126,7 @@ showMenu(ev, { object: doc, overrides, excludedActions }) } - function isAllowedToCreate (association: Association, docs: Doc[], direction: 'A' | 'B'): boolean { + function isAllowedToCreate(association: Association, docs: Doc[], direction: 'A' | 'B'): boolean { if (association.automationOnly) return false if (docs.length === 0 || association.type === 'N:N') return true if (association.type === '1:1') return false diff --git a/plugins/view-resources/src/components/RelationsEditor.svelte b/plugins/view-resources/src/components/RelationsEditor.svelte index 902a2ad866..35f31e055f 100644 --- a/plugins/view-resources/src/components/RelationsEditor.svelte +++ b/plugins/view-resources/src/components/RelationsEditor.svelte @@ -31,7 +31,7 @@ let associationsA: Association[] = [] let associationsB: Association[] = [] - function getAssociations (object: Doc): void { + function getAssociations(object: Doc): void { const parents = h.getAncestors(object._class) const mixins = h.findAllMixins(object) associationsB = client diff --git a/plugins/view-resources/src/components/RelationsSelectorPopup.svelte b/plugins/view-resources/src/components/RelationsSelectorPopup.svelte index 61eabe2727..f18adec781 100644 --- a/plugins/view-resources/src/components/RelationsSelectorPopup.svelte +++ b/plugins/view-resources/src/components/RelationsSelectorPopup.svelte @@ -48,7 +48,7 @@ } ) - async function handler (e: CustomEvent): Promise { + async function handler(e: CustomEvent): Promise { if (e.detail != null) { const currentSet = new Set(selectedObjects) const newSet = new Set(Array.isArray(e.detail) ? e.detail : [e.detail]) diff --git a/plugins/view-resources/src/components/RelationshipTable.svelte b/plugins/view-resources/src/components/RelationshipTable.svelte index 0078847925..c265460505 100644 --- a/plugins/view-resources/src/components/RelationshipTable.svelte +++ b/plugins/view-resources/src/components/RelationshipTable.svelte @@ -118,12 +118,12 @@ $: sortingFunction = (config.find((it) => typeof it !== 'string' && it.sortingKey === _sortKey) as BuildModelKey) ?.sortingFunction - function getSort (sortKey: string | string[]) { + function getSort(sortKey: string | string[]) { return Array.isArray(sortKey) ? sortKey.reduce((acc: Record, val) => { - acc[val] = sortOrder - return acc - }, {}) + acc[val] = sortOrder + return acc + }, {}) : { ...(options?.sort ?? {}), [sortKey]: sortOrder } } @@ -213,7 +213,7 @@ gtotal = total } - function changeSorting (key: string | string[]): void { + function changeSorting(key: string | string[]): void { if (key === '') { return } @@ -248,20 +248,20 @@ return { ...attribute.props, space: object.space, ...readonlyParams } } - function getValue (attribute: AttributeModel, object: Doc): any { + function getValue(attribute: AttributeModel, object: Doc): any { return getAttributeValue(attribute, object, client.getHierarchy()) } - function showContextMenu (ev: MouseEvent, object: Doc | undefined): void { + function showContextMenu(ev: MouseEvent, object: Doc | undefined): void { if (object === undefined) return showMenu(ev, { object }) } - function onChange (value: any, doc: Doc, key: string, attribute: AnyAttribute): void { + function onChange(value: any, doc: Doc, key: string, attribute: AnyAttribute): void { updateAttribute(client, doc, _class, { key, attr: attribute }, value) } - function getOnChange (doc: Doc, attribute: AttributeModel) { + function getOnChange(doc: Doc, attribute: AttributeModel) { const attr = attribute.attribute if (attr === undefined) return if (attribute.collectionAttr) return @@ -279,7 +279,7 @@ let model: AttributeModel[] | undefined let modelOptions: BuildModelOptions | undefined - const updateModelOptions = reduceCalls(async function updateModelOptions ( + const updateModelOptions = reduceCalls(async function updateModelOptions( client: TxOperations, _class: Ref>, config: Array, @@ -293,7 +293,7 @@ }) $: void updateModelOptions(client, _class, config, lookup) - async function build (modelOptions: BuildModelOptions): Promise { + async function build(modelOptions: BuildModelOptions): Promise { isBuildingModel = true const res = await buildModel(modelOptions) res.sort((a, b) => { @@ -311,7 +311,7 @@ permissionsStore = await getResource(contact.store.Permissions) }) - function canChangeAttr ( + function canChangeAttr( object: Doc, attr: AnyAttribute | undefined, permissionsStore: PermissionsStore | undefined @@ -337,7 +337,7 @@ rowCount: number } - function getView (objects: Doc[], model: AttributeModel[] | undefined): RowModel[] { + function getView(objects: Doc[], model: AttributeModel[] | undefined): RowModel[] { if (model === undefined) return [] const res: RowModel[] = [] for (const obj of objects) { @@ -348,14 +348,14 @@ $: viewModel = getView(objects, model) - function getOwnAttributes (model: AttributeModel[], associationId?: string): AttributeModel[] { + function getOwnAttributes(model: AttributeModel[], associationId?: string): AttributeModel[] { return model.filter((attr) => { if (associationId) return attr.key.startsWith(associationId) && !attr.key.startsWith(`${associationId}.${assoc}`) return !attr.key.startsWith(assoc) }) } - function createLeafResult (doc: Doc | undefined, attrs: AttributeModel[], parent: Doc | undefined): WalkResult { + function createLeafResult(doc: Doc | undefined, attrs: AttributeModel[], parent: Doc | undefined): WalkResult { return { rowCount: 1, rows: [ @@ -371,7 +371,7 @@ } } - function processBranches ( + function processBranches( doc: Doc | undefined, model: AttributeModel[], associations: string[], @@ -402,7 +402,7 @@ return branchesByRelation } - function distributeExtraRows (totalRows: number, existingRows: number): number[] { + function distributeExtraRows(totalRows: number, existingRows: number): number[] { const diff = totalRows - existingRows const extraPerRow = new Array(existingRows).fill(0) @@ -419,7 +419,7 @@ return extraPerRow } - function mergeRows ( + function mergeRows( doc: Doc | undefined, ownAttrs: AttributeModel[], branchesByRelation: Map, @@ -505,7 +505,7 @@ } } - function isAssociationKey (key: string): boolean { + function isAssociationKey(key: string): boolean { // A valid association key ends with `$associations.{assocId}_{direction}` // Sub-field keys like `$associations.assocId_b.fieldName` should NOT be treated as associations const parts = key.split('.') @@ -522,7 +522,7 @@ return lastAssocIdx + 1 === parts.length - 1 } - function getAssociations (model: AttributeModel[], associationId?: string): string[] { + function getAssociations(model: AttributeModel[], associationId?: string): string[] { return model .filter((p) => { if (!isAssociationKey(p.key)) return false @@ -539,7 +539,7 @@ .map((p) => p.key) } - function walk ( + function walk( doc: WithLookup | undefined, model: AttributeModel[], associationId?: string, @@ -563,7 +563,7 @@ return res } - function clickHandler (e: MouseEvent, cell: CellModel): void { + function clickHandler(e: MouseEvent, cell: CellModel): void { if (cell.parentObject === undefined) return const parts = cell.attribute.key.split('$associations.') let association = parts.pop() diff --git a/plugins/view-resources/src/components/RelationshipTableBrowser.svelte b/plugins/view-resources/src/components/RelationshipTableBrowser.svelte index 26ccaaed51..fbcec703f2 100644 --- a/plugins/view-resources/src/components/RelationshipTableBrowser.svelte +++ b/plugins/view-resources/src/components/RelationshipTableBrowser.svelte @@ -34,7 +34,7 @@ export let readonly = false const contextId = generateId() - async function onSort (event: CustomEvent<{ key: string, order: SortingOrder }>) { + async function onSort(event: CustomEvent<{ key: string, order: SortingOrder }>) { const { key, order } = event.detail if (viewlet && viewOptions) { viewOptions.orderBy = [key, order] diff --git a/plugins/view-resources/src/components/SearchEmptyState.svelte b/plugins/view-resources/src/components/SearchEmptyState.svelte index 0b4049905e..41743e4364 100644 --- a/plugins/view-resources/src/components/SearchEmptyState.svelte +++ b/plugins/view-resources/src/components/SearchEmptyState.svelte @@ -32,7 +32,7 @@ export let broaderScopeLabel: IntlString | undefined = undefined export let onBroaderScope: (() => void) | undefined = undefined - function clearFilters (): void { + function clearFilters(): void { setFilters([]) } diff --git a/plugins/view-resources/src/components/SearchSelector.svelte b/plugins/view-resources/src/components/SearchSelector.svelte index 49b544b1c9..1c9a17e9c8 100644 --- a/plugins/view-resources/src/components/SearchSelector.svelte +++ b/plugins/view-resources/src/components/SearchSelector.svelte @@ -2,7 +2,7 @@ import { IconSearch, StatusBarButton, showPopup } from '@hcengineering/ui' import ActionsPopup from './ActionsPopup.svelte' - function openPopup (): void { + function openPopup(): void { showPopup(ActionsPopup, {}, 'top') } diff --git a/plugins/view-resources/src/components/SpaceHeader.svelte b/plugins/view-resources/src/components/SpaceHeader.svelte index e213415191..ba2d564c48 100644 --- a/plugins/view-resources/src/components/SpaceHeader.svelte +++ b/plugins/view-resources/src/components/SpaceHeader.svelte @@ -41,7 +41,7 @@ $: viewletActions = viewlet != null ? getViewletSpecialActions(getClient(), viewlet) : [] - function setSearchProp (v: string): void { + function setSearchProp(v: string): void { search = v } diff --git a/plugins/view-resources/src/components/StringEditor.svelte b/plugins/view-resources/src/components/StringEditor.svelte index 78b045c36e..418681d746 100644 --- a/plugins/view-resources/src/components/StringEditor.svelte +++ b/plugins/view-resources/src/components/StringEditor.svelte @@ -34,7 +34,7 @@ let shown: boolean = false - function _onchange (ev: Event) { + function _onchange(ev: Event) { onChange((ev.target as HTMLInputElement).value) } diff --git a/plugins/view-resources/src/components/StringPresenter.svelte b/plugins/view-resources/src/components/StringPresenter.svelte index c246094dfc..96e48c9208 100644 --- a/plugins/view-resources/src/components/StringPresenter.svelte +++ b/plugins/view-resources/src/components/StringPresenter.svelte @@ -23,7 +23,7 @@ $: tooltipParams = getTooltip(value) - function getTooltip (value: string | string[] | null | undefined): LabelAndProps | undefined { + function getTooltip(value: string | string[] | null | undefined): LabelAndProps | undefined { if (value == null) return let str = '' if (Array.isArray(value)) { diff --git a/plugins/view-resources/src/components/Table.svelte b/plugins/view-resources/src/components/Table.svelte index 1bbcd6cfc6..b7872c2f8e 100644 --- a/plugins/view-resources/src/components/Table.svelte +++ b/plugins/view-resources/src/components/Table.svelte @@ -129,12 +129,12 @@ $: sortingFunction = (config.find((it) => typeof it !== 'string' && it.sortingKey === _sortKey) as BuildModelKey) ?.sortingFunction - function getSort (sortKey: string | string[]) { + function getSort(sortKey: string | string[]) { return Array.isArray(sortKey) ? sortKey.reduce((acc: Record, val) => { - acc[val] = sortOrder - return acc - }, {}) + acc[val] = sortOrder + return acc + }, {}) : { ...(options?.sort ?? {}), [sortKey]: sortOrder } } @@ -241,7 +241,7 @@ showMenu(ev, { object: items, baseMenuClass }) } - function changeSorting (key: string | string[]): void { + function changeSorting(key: string | string[]): void { if (key === '') { return } @@ -258,22 +258,22 @@ $: checkedSet = new Set>(checked.map((it) => it._id)) $: allItemsSelected = objects?.length === checkedSet.size && objects?.length > 0 - export function check (docs: Doc[], value: boolean) { + export function check(docs: Doc[], value: boolean) { if (!enableChecking) return dispatch('check', { docs, value }) } - function getLoadingLength (props: LoadingProps, options?: FindOptions): number { + function getLoadingLength(props: LoadingProps, options?: FindOptions): number { if (options?.limit !== undefined && options?.limit > 0) { return Math.min(options?.limit, props.length) } return props.length } - function onRow (object: Doc): void { + function onRow(object: Doc): void { dispatch('row-focus', object) } - export function select (offset: 1 | -1 | 0, of?: Doc, noScroll?: boolean): void { + export function select(offset: 1 | -1 | 0, of?: Doc, noScroll?: boolean): void { let pos = (of !== undefined ? objects.findIndex((it) => it._id === of._id) : selection) ?? -1 pos += offset if (pos < 0) { @@ -310,7 +310,7 @@ } return { ...attribute.props, space: object.space, ...readonlyParams } } - function getValue (attribute: AttributeModel, object: Doc): any { + function getValue(attribute: AttributeModel, object: Doc): any { if (attribute.castRequest) { return getObjectValue( attribute.key.substring(attribute.castRequest.length + 1), @@ -320,11 +320,11 @@ return getObjectValue(attribute.key, object) } - function onChange (value: any, doc: Doc, key: string, attribute: AnyAttribute): void { + function onChange(value: any, doc: Doc, key: string, attribute: AnyAttribute): void { updateAttribute(client, doc, _class, { key, attr: attribute }, value) } - function getOnChange (doc: Doc, attribute: AttributeModel) { + function getOnChange(doc: Doc, attribute: AttributeModel) { const attr = attribute.attribute if (attr === undefined) return if (attribute.collectionAttr) return @@ -342,7 +342,7 @@ let model: AttributeModel[] | undefined let modelOptions: BuildModelOptions | undefined - const updateModelOptions = reduceCalls(async function updateModelOptions ( + const updateModelOptions = reduceCalls(async function updateModelOptions( client: TxOperations, _class: Ref>, config: Array, @@ -356,14 +356,14 @@ }) $: void updateModelOptions(client, _class, config, lookup) - async function build (modelOptions: BuildModelOptions): Promise { + async function build(modelOptions: BuildModelOptions): Promise { isBuildingModel = true const res = await buildModel(modelOptions) model = res isBuildingModel = false } - function contextHandler (object: Doc, row: number): (ev: MouseEvent) => void { + function contextHandler(object: Doc, row: number): (ev: MouseEvent) => void { return (ev) => { if (!readonly) { void showContextMenu(ev, object, row) @@ -377,7 +377,7 @@ permissionsStore = await getResource(contact.store.Permissions) }) - function canChangeAttr ( + function canChangeAttr( object: Doc, attr: AnyAttribute | undefined, permissionsStore: PermissionsStore | undefined @@ -387,7 +387,7 @@ return canChangeAttribute(attr, object.space as Ref, permissionsStore, object._class) } - async function canEdit (object: Doc): Promise { + async function canEdit(object: Doc): Promise { if (client.getHierarchy().isDerived(object._class, core.class.Space)) { return await canEditSpace(object) } diff --git a/plugins/view-resources/src/components/TableBrowser.svelte b/plugins/view-resources/src/components/TableBrowser.svelte index eba19ce57d..63f7d8c9c6 100644 --- a/plugins/view-resources/src/components/TableBrowser.svelte +++ b/plugins/view-resources/src/components/TableBrowser.svelte @@ -57,7 +57,7 @@ const selection = listProvider.selection const contextId = generateId() - async function onSort (event: CustomEvent<{ key: string, order: SortingOrder }>) { + async function onSort(event: CustomEvent<{ key: string, order: SortingOrder }>) { const { key, order } = event.detail if (viewlet && viewOptions) { viewOptions.orderBy = [key, order] diff --git a/plugins/view-resources/src/components/UpDownNavigator.svelte b/plugins/view-resources/src/components/UpDownNavigator.svelte index 4a040e95ed..651976187b 100644 --- a/plugins/view-resources/src/components/UpDownNavigator.svelte +++ b/plugins/view-resources/src/components/UpDownNavigator.svelte @@ -12,7 +12,7 @@ const client = getClient() - async function next (evt: Event, pn: boolean): Promise { + async function next(evt: Event, pn: boolean): Promise { select(evt, pn ? 1 : -1, element, 'vertical') await tick() if ($focusStore.focus !== undefined) { diff --git a/plugins/view-resources/src/components/ValueSelector.svelte b/plugins/view-resources/src/components/ValueSelector.svelte index 1c9045ed4b..78c5541ada 100644 --- a/plugins/view-resources/src/components/ValueSelector.svelte +++ b/plugins/view-resources/src/components/ValueSelector.svelte @@ -18,12 +18,12 @@ export let attribute: string export let searchField: string export let values: - | Array<{ - icon?: Asset - label: IntlString - id: string | number - }> - | undefined = undefined + | Array<{ + icon?: Asset + label: IntlString + id: string | number + }> + | undefined = undefined export let fillQuery: Record | undefined export let docMatches: string[] | undefined @@ -80,7 +80,7 @@ let docMatch = true - function updateQuery ( + function updateQuery( query: DocumentQuery | undefined, value: Doc | Doc[], fillQuery: Record | undefined diff --git a/plugins/view-resources/src/components/ViewOptions.svelte b/plugins/view-resources/src/components/ViewOptions.svelte index ee94f92d0e..cc01bb1946 100644 --- a/plugins/view-resources/src/components/ViewOptions.svelte +++ b/plugins/view-resources/src/components/ViewOptions.svelte @@ -57,7 +57,7 @@ } }) - function selectGrouping (value: string, i: number) { + function selectGrouping(value: string, i: number) { groups[i] = value if (value === noCategory) { groups.length = i + 1 @@ -72,7 +72,7 @@ }) } - function getItems (groupBy: DropdownIntlItem[], i: number, current: string[]): DropdownIntlItem[] { + function getItems(groupBy: DropdownIntlItem[], i: number, current: string[]): DropdownIntlItem[] { const notAllowed = current.slice(0, i) return groupBy.filter((p) => !notAllowed.includes(p.id as string)) } diff --git a/plugins/view-resources/src/components/ViewOptionsButton.svelte b/plugins/view-resources/src/components/ViewOptionsButton.svelte index 81ae676c97..bc06ce0868 100644 --- a/plugins/view-resources/src/components/ViewOptionsButton.svelte +++ b/plugins/view-resources/src/components/ViewOptionsButton.svelte @@ -43,7 +43,7 @@ let btn: HTMLButtonElement let pressed: boolean = false - function getGroupingCustomAttributes (h: Hierarchy, _class: Ref>): string[] { + function getGroupingCustomAttributes(h: Hierarchy, _class: Ref>): string[] { const customAttributes = [...h.getOwnAttributes(_class).values()] .filter( (attr) => attr.isCustom && !attr.isHidden && [core.class.RefTo, core.class.EnumOf].includes(attr.type._class) @@ -52,7 +52,7 @@ return customAttributes } - function getCustomSortingAttributes (h: Hierarchy, _class: Ref>): OrderOption[] { + function getCustomSortingAttributes(h: Hierarchy, _class: Ref>): OrderOption[] { const sortableTypes: Ref>>[] = [ core.class.EnumOf, core.class.TypeString, @@ -69,7 +69,7 @@ return customSortableAttributes } - async function clickHandler (): Promise { + async function clickHandler(): Promise { if (viewlet === undefined) { return } diff --git a/plugins/view-resources/src/components/ViewletClassSettings.svelte b/plugins/view-resources/src/components/ViewletClassSettings.svelte index 9007628433..26d2f50ecd 100644 --- a/plugins/view-resources/src/components/ViewletClassSettings.svelte +++ b/plugins/view-resources/src/components/ViewletClassSettings.svelte @@ -24,12 +24,12 @@ const dispatch = createEventDispatcher() - function dragEnd () { + function dragEnd() { selected = undefined dispatch('save', items) } - function dragOver (e: DragEvent, i: number) { + function dragOver(e: DragEvent, i: number) { e.preventDefault() e.stopPropagation() const s = selected as number @@ -41,7 +41,7 @@ const elements: HTMLElement[] = [] - function dragswap (ev: MouseEvent, i: number, s: number): boolean { + function dragswap(ev: MouseEvent, i: number, s: number): boolean { if (i < s) { return ev.offsetY < elements[i].offsetHeight / 2 } else if (i > s) { @@ -50,7 +50,7 @@ return false } - function change (item: Config, value: boolean): void { + function change(item: Config, value: boolean): void { if (isAttribute(item)) { item.enabled = value dispatch('save', items) diff --git a/plugins/view-resources/src/components/ViewletContentView.svelte b/plugins/view-resources/src/components/ViewletContentView.svelte index a8d50f0952..c3dcb38b89 100644 --- a/plugins/view-resources/src/components/ViewletContentView.svelte +++ b/plugins/view-resources/src/components/ViewletContentView.svelte @@ -30,7 +30,7 @@ let configurationRaw: Viewlet[] = [] let configurations: Record>, Viewlet['config']> = {} - function fetchConfigurations (viewlet: Viewlet): void { + function fetchConfigurations(viewlet: Viewlet): void { configurations = {} configurationsLoading = objectConfigurations.query( view.class.Viewlet, @@ -47,7 +47,7 @@ ) } - function fetchPreferences (configurationRaw: Viewlet[]): void { + function fetchPreferences(configurationRaw: Viewlet[]): void { preferencesLoading = preferenceQuery.query( view.class.ViewletPreference, { @@ -62,7 +62,7 @@ ) } - function updateConfiguration (configurationRaw: Viewlet[], preference: ViewletPreference[]): void { + function updateConfiguration(configurationRaw: Viewlet[], preference: ViewletPreference[]): void { const newConfigurations: Record>, Viewlet['config']> = {} for (const v of configurationRaw) { diff --git a/plugins/view-resources/src/components/ViewletSelector.svelte b/plugins/view-resources/src/components/ViewletSelector.svelte index e057ee1817..316e745140 100644 --- a/plugins/view-resources/src/components/ViewletSelector.svelte +++ b/plugins/view-resources/src/components/ViewletSelector.svelte @@ -44,7 +44,7 @@ const dispatch = createEventDispatcher() - function getActiveViewlet ( + function getActiveViewlet( viewlets: Array>, activeViewlet: Record | null>, key: string diff --git a/plugins/view-resources/src/components/ViewletSetting.svelte b/plugins/view-resources/src/components/ViewletSetting.svelte index 4ee033794b..bf0ca7920d 100644 --- a/plugins/view-resources/src/components/ViewletSetting.svelte +++ b/plugins/view-resources/src/components/ViewletSetting.svelte @@ -95,7 +95,7 @@ order?: number } - function getObjectConfig (_class: Ref>, param: string): AttributeConfig { + function getObjectConfig(_class: Ref>, param: string): AttributeConfig { const clazz = hierarchy.getClass(_class) return { type: 'attribute', @@ -107,11 +107,11 @@ } } - function getAssociationLabel (client: TxOperations, param: string): IntlString { + function getAssociationLabel(client: TxOperations, param: string): IntlString { return getKeyLabel(client, viewlet.attachTo, param, undefined) } - function getBaseConfig (viewlet: Viewlet): Config[] { + function getBaseConfig(viewlet: Viewlet): Config[] { const config = defaultConfig ?? viewlet.config const lookup = buildConfigLookup(hierarchy, viewlet.attachTo, config, viewlet.options?.lookup) const result: Config[] = [] @@ -177,7 +177,7 @@ return result } - function getValue (name: string, type: Type, attrClass: Ref>): string { + function getValue(name: string, type: Type, attrClass: Ref>): string { const presenter = hierarchy.classHierarchyMixin(attrClass, view.mixin.AttributePresenter)?.presenter if (presenter !== undefined) { return name @@ -188,7 +188,7 @@ return name } - function processAttribute (attribute: AnyAttribute, result: Config[], useMixinProxy = false): void { + function processAttribute(attribute: AnyAttribute, result: Config[], useMixinProxy = false): void { if (attribute.hidden || attribute.label === undefined) return if (viewlet.configOptions?.hiddenKeys?.includes(attribute.name)) return if (hierarchy.isDerived(attribute.type._class, core.class.Collection)) return @@ -244,15 +244,15 @@ } } - function isAttribute (val: Config): val is AttributeConfig { + function isAttribute(val: Config): val is AttributeConfig { return val.type === 'attribute' } - function getKey (value: string | BuildModelKey | undefined): string | undefined { + function getKey(value: string | BuildModelKey | undefined): string | undefined { return typeof value === 'string' ? value : value?.key } - function getAttributeKey (key: string): string { + function getAttributeKey(key: string): string { if (key.startsWith('$lookup.')) { return key.slice('$lookup.'.length) } @@ -260,11 +260,11 @@ return dotIndex === -1 ? key : key.slice(dotIndex + 1) } - function isSourceAttribute (sourceClass: Ref>, key: string): boolean { + function isSourceAttribute(sourceClass: Ref>, key: string): boolean { return hierarchy.getAllAttributes(sourceClass).has(getAttributeKey(key)) } - function syncConfigOrder ( + function syncConfigOrder( sourceClass: Ref>, previousSourceConfig: Array, sourceConfig: Array, @@ -313,7 +313,7 @@ return synced } - function isExist (result: Config[], newValue: Config): boolean { + function isExist(result: Config[], newValue: Config): boolean { if (!isAttribute(newValue)) return false const newValueKey = getKey(newValue.value) if (newValueKey === undefined) return false @@ -332,11 +332,11 @@ return false } - function getParentsString (parents: AssociationQuery[]): string { + function getParentsString(parents: AssociationQuery[]): string { return parents.map(([assocId, direction]) => `$associations.${assocId}_${direction === 1 ? 'a' : 'b'}`).join('.') } - async function processAssociation ( + async function processAssociation( association: Association, direction: 'a' | 'b', result: Config[], @@ -387,7 +387,7 @@ } } - async function addAssociationAttributes ( + async function addAssociationAttributes( result: Config[], targetClass: Ref>, associationKey: string, @@ -429,7 +429,7 @@ } } - async function getConfig (viewlet: Viewlet, preference: ViewletPreference | undefined): Promise { + async function getConfig(viewlet: Viewlet, preference: ViewletPreference | undefined): Promise { const result = getBaseConfig(viewlet) if (viewlet.configOptions?.strict !== true) { @@ -452,7 +452,7 @@ return preference === undefined ? result : setStatus(result, preference) } - async function upsertViewletPreference ( + async function upsertViewletPreference( viewletId: Ref, config: Array ): Promise { @@ -471,7 +471,7 @@ } } - async function syncChildViewletPreferences ( + async function syncChildViewletPreferences( sourceViewlet: Viewlet, previousSourceConfig: Array, sourceConfig: Array @@ -491,7 +491,7 @@ } } - async function addAssociations ( + async function addAssociations( result: Config[], _class: Ref>, preference: ViewletPreference | undefined, @@ -523,7 +523,7 @@ } } - async function save (viewletId: Ref, items: Array): Promise { + async function save(viewletId: Ref, items: Array): Promise { const configValues = items.filter( (p) => p.value !== undefined && @@ -548,14 +548,14 @@ } } - async function restoreDefault (viewletId: Ref): Promise { + async function restoreDefault(viewletId: Ref): Promise { const preference = preferences.find((p) => p.attachedTo === viewletId) if (preference !== undefined) { await client.remove(preference) } } - function setStatus (result: Config[], preference: ViewletPreference): Config[] { + function setStatus(result: Config[], preference: ViewletPreference): Config[] { for (const key of result) { if (!isAttribute(key)) continue const index = preference.config.findIndex((p) => deepEqual(p, key.value)) diff --git a/plugins/view-resources/src/components/ViewletSettingButton.svelte b/plugins/view-resources/src/components/ViewletSettingButton.svelte index 10c9ff5c89..ea6f94e9c2 100644 --- a/plugins/view-resources/src/components/ViewletSettingButton.svelte +++ b/plugins/view-resources/src/components/ViewletSettingButton.svelte @@ -65,7 +65,7 @@ let btn: HTMLButtonElement let pressed: boolean = false - function clickHandler () { + function clickHandler() { pressed = true closeTooltip() showPopup(ViewletSetting, { viewlet, defaultConfig }, btn, () => { @@ -73,7 +73,7 @@ }) } - function getDefaults (viewOptions: ViewOptionsModel): ViewOptions { + function getDefaults(viewOptions: ViewOptionsModel): ViewOptions { const res: ViewOptions = { groupBy: [viewOptions.groupBy[0] ?? defaultOptions.groupBy[0]], orderBy: viewOptions.orderBy?.[0] ?? defaultOptions.orderBy @@ -84,7 +84,7 @@ return res } - function getDefaultOptions (): ViewOptions { + function getDefaultOptions(): ViewOptions { if (defaultViewOptions != null) return defaultViewOptions return viewlet?.viewOptions != null ? getDefaults(viewlet.viewOptions) : defaultOptions diff --git a/plugins/view-resources/src/components/ViewletsSettingButton.svelte b/plugins/view-resources/src/components/ViewletsSettingButton.svelte index c2e603511e..753613e0d7 100644 --- a/plugins/view-resources/src/components/ViewletsSettingButton.svelte +++ b/plugins/view-resources/src/components/ViewletsSettingButton.svelte @@ -39,7 +39,7 @@ let btn: HTMLButtonElement let pressed: boolean = false - function clickHandler (event: MouseEvent) { + function clickHandler(event: MouseEvent) { pressed = true closeTooltip() showPopup(ViewletSetting, { viewlet }, btn, () => { diff --git a/plugins/view-resources/src/components/filter/ArrayFilter.svelte b/plugins/view-resources/src/components/filter/ArrayFilter.svelte index ec72d26ded..1d4fd7a08f 100644 --- a/plugins/view-resources/src/components/filter/ArrayFilter.svelte +++ b/plugins/view-resources/src/components/filter/ArrayFilter.svelte @@ -61,7 +61,7 @@ let filterUpdateTimeout: any | undefined - async function getEnumValues (search: string): Promise { + async function getEnumValues(search: string): Promise { const enumId = ((filter.key.attribute.type as ArrOf).of as EnumOf).of const enumVal = await client.findOne(core.class.Enum, { _id: enumId }) if (enumVal !== undefined) { @@ -75,7 +75,7 @@ } } - async function getValues (search: string): Promise { + async function getValues(search: string): Promise { if (objectsPromise) { await objectsPromise } @@ -128,7 +128,7 @@ objectsPromise = undefined } - function getValue (obj: any): any { + function getValue(obj: any): any { if (typeof obj === 'string') { const trim = obj.trim() return trim.length > 0 ? trim.toUpperCase() : undefined @@ -137,11 +137,11 @@ } } - function isSelected (value: any, values: Set): boolean { + function isSelected(value: any, values: Set): boolean { return values.has(value) } - function handleFilterToggle (value: any): void { + function handleFilterToggle(value: any): void { if (isSelected(value, selectedValues)) { selectedValues.delete(value) } else { @@ -152,7 +152,7 @@ updateFilter(selectedValues) } - function updateFilter (newValues: Set) { + function updateFilter(newValues: Set) { clearTimeout(filterUpdateTimeout) filterUpdateTimeout = setTimeout(() => { diff --git a/plugins/view-resources/src/components/filter/DateFilter.svelte b/plugins/view-resources/src/components/filter/DateFilter.svelte index 394b3c21b3..a828a46387 100644 --- a/plugins/view-resources/src/components/filter/DateFilter.svelte +++ b/plugins/view-resources/src/components/filter/DateFilter.svelte @@ -64,7 +64,7 @@ modes = res }) - function showPicker () { + function showPicker() { if (filter.mode === view.filter.FilterDateBetween) { showPopup( RangeDatePopup, diff --git a/plugins/view-resources/src/components/filter/DateFilterPresenter.svelte b/plugins/view-resources/src/components/filter/DateFilterPresenter.svelte index 113319add3..8bc4016608 100644 --- a/plugins/view-resources/src/components/filter/DateFilterPresenter.svelte +++ b/plugins/view-resources/src/components/filter/DateFilterPresenter.svelte @@ -26,7 +26,7 @@ $: checkValues(filter.mode) - function checkValues (mode: Ref) { + function checkValues(mode: Ref) { if (mode !== view.filter.FilterDateBetween && filter.value.length !== 1) { showPicker() } else if (mode === view.filter.FilterDateBetween && filter.value.length !== 2) { @@ -34,7 +34,7 @@ } } - function showPicker () { + function showPicker() { if (filter.mode === view.filter.FilterDateBetween) { showPopup( RangeDatePopup, diff --git a/plugins/view-resources/src/components/filter/FilterBar.svelte b/plugins/view-resources/src/components/filter/FilterBar.svelte index 85fba9e11f..9421f70d1f 100644 --- a/plugins/view-resources/src/components/filter/FilterBar.svelte +++ b/plugins/view-resources/src/components/filter/FilterBar.svelte @@ -45,11 +45,11 @@ const account = getCurrentAccount() const canSaveFilteredView = account.role !== AccountRole.ReadOnlyGuest && account.role !== AccountRole.DocGuest - function onChange (e: Filter | undefined): void { + function onChange(e: Filter | undefined): void { if (e !== undefined) updateFilter(e) } - function add (e: MouseEvent): void { + function add(e: MouseEvent): void { const target = eventToHTMLElement(e) showPopup( FilterTypePopup, @@ -64,11 +64,11 @@ ) } - async function saveFilteredView (): Promise { + async function saveFilteredView(): Promise { showPopup(FilterSave, { viewOptions, _class }) } - async function saveCurrentFilteredView (filter: FilteredView | undefined): Promise { + async function saveCurrentFilteredView(filter: FilteredView | undefined): Promise { if (filter !== undefined) { const filters = JSON.stringify($filterStore) await client.update(filter, { @@ -109,7 +109,7 @@ visible = hierarchy.classHierarchyMixin(_class, view.mixin.ClassFilters) !== undefined } - function selectedFilterChanged ( + function selectedFilterChanged( selectedFilter: FilteredView | undefined, filters: Filter[], activeViewlet: Record | null>, diff --git a/plugins/view-resources/src/components/filter/FilterButton.svelte b/plugins/view-resources/src/components/filter/FilterButton.svelte index 7b4f418be6..41c0820410 100644 --- a/plugins/view-resources/src/components/filter/FilterButton.svelte +++ b/plugins/view-resources/src/components/filter/FilterButton.svelte @@ -36,7 +36,7 @@ } }) - function load (_class: Ref> | undefined): void { + function load(_class: Ref> | undefined): void { const key = getFilterKey(_class) const items = localStorage.getItem(key) if (items !== null) { @@ -44,7 +44,7 @@ } } - function save (_class: Ref> | undefined, p: Filter[]): void { + function save(_class: Ref> | undefined, p: Filter[]): void { const key = getFilterKey(_class) localStorage.setItem(key, JSON.stringify(p)) } @@ -53,12 +53,12 @@ save(_class, p) }) - function nextFilterIndex (): number { + function nextFilterIndex(): number { const current = $filterStore.map((f) => f.index) return current.length === 0 ? 1 : Math.max(...current) + 1 } - function onChange (e: Filter | undefined): void { + function onChange(e: Filter | undefined): void { if (e !== undefined) updateFilter(e) } @@ -66,7 +66,7 @@ _class = undefined }) - function add (e: MouseEvent): void { + function add(e: MouseEvent): void { const target = eventToHTMLElement(e) showPopup( FilterTypePopup, diff --git a/plugins/view-resources/src/components/filter/FilterSave.svelte b/plugins/view-resources/src/components/filter/FilterSave.svelte index 034df3d158..e293b20138 100644 --- a/plugins/view-resources/src/components/filter/FilterSave.svelte +++ b/plugins/view-resources/src/components/filter/FilterSave.svelte @@ -16,14 +16,14 @@ let filterName = '' const client = getClient() - async function getTargetSpace (spaceRef: string | undefined): Promise> { + async function getTargetSpace(spaceRef: string | undefined): Promise> { // Store the filtered view in the space it is built on if (spaceRef === undefined) return core.space.Workspace const space = await client.findOne(core.class.Space, { _id: spaceRef as Ref }) return space?._id ?? core.space.Workspace } - async function saveFilter () { + async function saveFilter() { const loc = getCurrentResolvedLocation() loc.fragment = undefined const filters = JSON.stringify($filterStore) diff --git a/plugins/view-resources/src/components/filter/FilterSection.svelte b/plugins/view-resources/src/components/filter/FilterSection.svelte index 57ea8f7e05..9f73af962e 100644 --- a/plugins/view-resources/src/components/filter/FilterSection.svelte +++ b/plugins/view-resources/src/components/filter/FilterSection.svelte @@ -40,7 +40,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function getTargetClass (): Ref> | undefined { + function getTargetClass(): Ref> | undefined { try { return (hierarchy.getAttribute(currentFilter.key._class, currentFilter.key.key).type as RefTo).to } catch (err: any) { @@ -51,7 +51,7 @@ $: isState = targetClass === core.class.Status const dispatch = createEventDispatcher() - async function getCountStates (ids: Array>): Promise { + async function getCountStates(ids: Array>): Promise { if (targetClass === undefined) { return 0 } @@ -61,7 +61,7 @@ } let countLabel: string = '' - async function getLabel (): Promise { + async function getLabel(): Promise { const count = isState ? await getCountStates(currentFilter.value) : currentFilter.value.length countLabel = await translate(view.string.FilterStatesCount, { value: count }, $themeStore.language) } @@ -70,17 +70,17 @@ $: if (filter) getLabel() $: getValueComponent(currentFilter) - async function getValueComponent (filter: Filter): Promise { + async function getValueComponent(filter: Filter): Promise { const presenterClass = getAttributePresenterClass(hierarchy, filter.key.attribute.type) const presenterMixin = hierarchy.classHierarchyMixin(presenterClass.attrClass, view.mixin.AttributeFilterPresenter) valueComponent = presenterMixin?.presenter } - async function getMode (mode: Ref): Promise { + async function getMode(mode: Ref): Promise { return await client.findOne(view.class.FilterMode, { _id: mode }) } - function onChange (e: Filter) { + function onChange(e: Filter) { if (filter.nested !== undefined) { filter.nested = e } else { @@ -97,7 +97,7 @@ $: modeValuePromise = getMode(filter.mode) $: nestedModeValuePromise = filter.nested ? getMode(filter.nested.mode) : undefined - function clickHandler (e: MouseEvent, nested: boolean) { + function clickHandler(e: MouseEvent, nested: boolean) { const curr = nested && filter.nested ? filter.nested : filter showPopup(ModeSelector, { filter: curr }, eventToHTMLElement(e), (res) => { if (res) { diff --git a/plugins/view-resources/src/components/filter/FilterTypePopup.svelte b/plugins/view-resources/src/components/filter/FilterTypePopup.svelte index 3b0c0f6f40..489ba0a913 100644 --- a/plugins/view-resources/src/components/filter/FilterTypePopup.svelte +++ b/plugins/view-resources/src/components/filter/FilterTypePopup.svelte @@ -34,7 +34,7 @@ const client = getClient() const hierarchy = client.getHierarchy() - function getFilters (_class: Ref>, mixin: ClassFilters): KeyFilter[] { + function getFilters(_class: Ref>, mixin: ClassFilters): KeyFilter[] { if (mixin.filters === undefined) return [] const filters = mixin.filters.map((p) => { return typeof p === 'string' ? buildFilterFromKey(mixin._id, p) : buildFilterFromPreset(p) @@ -51,7 +51,7 @@ return result } - function buildFilterFromPreset (p: KeyFilterPreset): KeyFilter | undefined { + function buildFilterFromPreset(p: KeyFilterPreset): KeyFilter | undefined { if (p.key !== '') { const attribute = hierarchy.getAttribute(p._class, p.key) return { @@ -62,19 +62,19 @@ } } - function buildFilterFromKey (_class: Ref>, key: string): KeyFilter | undefined { + function buildFilterFromKey(_class: Ref>, key: string): KeyFilter | undefined { const attribute = hierarchy.getAttribute(_class, key) return buildFilterKey(hierarchy, _class, key, attribute) } - function getValue (name: string, type: Type): string { + function getValue(name: string, type: Type): string { if (hierarchy.isDerived(type._class, core.class.ArrOf)) { return getValue(name, (type as ArrOf).of) } return name } - function buildFilterForAttr (_class: Ref>, attribute: AnyAttribute, result: KeyFilter[]): void { + function buildFilterForAttr(_class: Ref>, attribute: AnyAttribute, result: KeyFilter[]): void { if (attribute.label === undefined || attribute.hidden) { return } @@ -88,7 +88,7 @@ } } - function buildFilterFor ( + function buildFilterFor( _class: Ref>, allAttributes: Map, result: KeyFilter[], @@ -103,7 +103,7 @@ } } - async function getTypes (_class: Ref>, nestedFrom: KeyFilter | undefined): Promise { + async function getTypes(_class: Ref>, nestedFrom: KeyFilter | undefined): Promise { let res: KeyFilter[] = [] if (nestedFrom !== undefined) { res = await getNestedTypes(nestedFrom) @@ -121,12 +121,12 @@ return res } - async function getNestedTypes (type: KeyFilter): Promise { + async function getNestedTypes(type: KeyFilter): Promise { const targetClass = (hierarchy.getAttribute(type._class, type.key).type as RefTo).to return await getOwnTypes(targetClass) } - async function getOwnTypes (_class: Ref>): Promise { + async function getOwnTypes(_class: Ref>): Promise { const mixin = hierarchy.classHierarchyMixin(_class, view.mixin.ClassFilters) if (mixin === undefined) return [] _class = hierarchy.getBaseClass(_class) @@ -194,7 +194,7 @@ const dispatch = createEventDispatcher() - function click (type: KeyFilter): void { + function click(type: KeyFilter): void { closePopup() closeTooltip() @@ -239,7 +239,7 @@ } } - function hasNested (type: KeyFilter): boolean { + function hasNested(type: KeyFilter): boolean { if (type.showNested === false) { return false } @@ -249,7 +249,7 @@ return hierarchy.hasMixin(clazz, view.mixin.ClassFilters) } - function setNestedFilter (type: KeyFilter, e: Filter | undefined) { + function setNestedFilter(type: KeyFilter, e: Filter | undefined) { const filter: Filter = { value: [], key: type, @@ -269,7 +269,7 @@ const elements: HTMLElement[] = [] - function nextDiffCat (types: KeyFilter[], i: number): boolean { + function nextDiffCat(types: KeyFilter[], i: number): boolean { if (types[i + 1] === undefined) return false return types[i].group !== types[i + 1].group } diff --git a/plugins/view-resources/src/components/filter/InlineFilterChips.svelte b/plugins/view-resources/src/components/filter/InlineFilterChips.svelte index 9b13e998c3..86583fb9f1 100644 --- a/plugins/view-resources/src/components/filter/InlineFilterChips.svelte +++ b/plugins/view-resources/src/components/filter/InlineFilterChips.svelte @@ -74,7 +74,7 @@ } } - async function recompute (): Promise { + async function recompute(): Promise { await tick() // Unconstrained (below-header/list) placement never collapses: keep every // chip visible so its div.filter-section stays in the DOM. @@ -120,7 +120,7 @@ void recompute() } - function onContainerResize (el: Element): void { + function onContainerResize(el: Element): void { const w = (el as HTMLElement).clientWidth if (w !== containerWidth) containerWidth = w } @@ -134,13 +134,13 @@ let overflowPopup: PopupResult | undefined let unsubOverflow: (() => void) | undefined - function cleanupOverflow (): void { + function cleanupOverflow(): void { unsubOverflow?.() unsubOverflow = undefined overflowPopup = undefined } - function openOverflowPopover (e: MouseEvent): void { + function openOverflowPopover(e: MouseEvent): void { overflowPopup = showPopup( InlineFilterChipsOverflow, { hiddenStartIndex: visibleCount, space }, diff --git a/plugins/view-resources/src/components/filter/ObjectFilter.svelte b/plugins/view-resources/src/components/filter/ObjectFilter.svelte index 95fbfb9175..a26ad05f27 100644 --- a/plugins/view-resources/src/components/filter/ObjectFilter.svelte +++ b/plugins/view-resources/src/components/filter/ObjectFilter.svelte @@ -73,7 +73,7 @@ let filterUpdateTimeout: any | undefined - async function getValues (search: string): Promise { + async function getValues(search: string): Promise { if (objectsPromise !== undefined) { await objectsPromise } @@ -155,14 +155,14 @@ objectsPromise = undefined } - function isSelected (value: Doc | undefined | null, values: any[]): boolean { + function isSelected(value: Doc | undefined | null, values: any[]): boolean { if (value != null && grouppingManager !== undefined) { return grouppingManager.hasValue(value, values) } return values.includes(value?._id ?? value) } - function handleFilterToggle (value: any): void { + function handleFilterToggle(value: any): void { if (isSelected(value, filter.value)) { filter.value = filter.value.filter((p) => (value ? p !== value._id : p != null)) } else { @@ -176,7 +176,7 @@ updateFilter() } - function updateFilter (): void { + function updateFilter(): void { clearTimeout(filterUpdateTimeout) filterUpdateTimeout = setTimeout(() => { diff --git a/plugins/view-resources/src/components/filter/PersonIdFilterValuePresenter.svelte b/plugins/view-resources/src/components/filter/PersonIdFilterValuePresenter.svelte index 26aa48c393..1fd2ee17c5 100644 --- a/plugins/view-resources/src/components/filter/PersonIdFilterValuePresenter.svelte +++ b/plugins/view-resources/src/components/filter/PersonIdFilterValuePresenter.svelte @@ -24,7 +24,7 @@ let persons: Ref[] = [] $: void getPersons(value) - async function getPersons (ids: PersonId[]): Promise { + async function getPersons(ids: PersonId[]): Promise { if (ids !== undefined) { if (ids.length === 0) { persons = [] diff --git a/plugins/view-resources/src/components/filter/StringFilter.svelte b/plugins/view-resources/src/components/filter/StringFilter.svelte index f976d0fdf5..753df56a61 100644 --- a/plugins/view-resources/src/components/filter/StringFilter.svelte +++ b/plugins/view-resources/src/components/filter/StringFilter.svelte @@ -28,7 +28,7 @@ filter.modes = [view.filter.FilterContains] filter.mode ??= filter.modes[0] - export function onKeyDown (event: KeyboardEvent): boolean { + export function onKeyDown(event: KeyboardEvent): boolean { if (event.key === 'Enter') { event.preventDefault() event.stopPropagation() @@ -40,7 +40,7 @@ return false } - function save () { + function save() { if (search == null || search === '') { return } diff --git a/plugins/view-resources/src/components/filter/TimestampFilter.svelte b/plugins/view-resources/src/components/filter/TimestampFilter.svelte index a22025a434..83b62a8cec 100644 --- a/plugins/view-resources/src/components/filter/TimestampFilter.svelte +++ b/plugins/view-resources/src/components/filter/TimestampFilter.svelte @@ -27,7 +27,7 @@ filter.modes = [view.filter.FilterBefore, view.filter.FilterAfter] filter.mode = filter.mode === undefined ? filter.modes[0] : filter.mode - function click (value: number): void { + function click(value: number): void { closeTooltip() filter.value = [value] onChange(filter) @@ -35,7 +35,7 @@ } const today = new Date().setHours(0, 0, 0, 0) - function shiftDays (diff: number): number { + function shiftDays(diff: number): number { return new Date(today).setDate(new Date(today).getDate() - diff) } diff --git a/plugins/view-resources/src/components/filter/ValueFilter.svelte b/plugins/view-resources/src/components/filter/ValueFilter.svelte index 0d77e78723..2d76119c60 100644 --- a/plugins/view-resources/src/components/filter/ValueFilter.svelte +++ b/plugins/view-resources/src/components/filter/ValueFilter.svelte @@ -64,7 +64,7 @@ let filterUpdateTimeout: any | undefined - async function getValues (search: string): Promise { + async function getValues(search: string): Promise { if (objectsPromise) { await objectsPromise } @@ -83,7 +83,7 @@ } : {} - async function doQuery (limit: number | undefined, sortedValues: any[] | undefined): Promise { + async function doQuery(limit: number | undefined, sortedValues: any[] | undefined): Promise { const p = client.findAll( _class, { @@ -132,7 +132,7 @@ } } - function getValue (obj: any): any { + function getValue(obj: any): any { if (typeof obj === 'string') { const trim = obj.trim() return trim.length > 0 ? trim.toUpperCase() : undefined @@ -141,11 +141,11 @@ } } - function isSelected (value: any, values: Set): boolean { + function isSelected(value: any, values: Set): boolean { return values.has(value) } - function handleFilterToggle (value: any): void { + function handleFilterToggle(value: any): void { if (isSelected(value, selectedValues)) { selectedValues.delete(value) } else { @@ -156,7 +156,7 @@ updateFilter(selectedValues) } - function updateFilter (newValues: Set) { + function updateFilter(newValues: Set) { clearTimeout(filterUpdateTimeout) filterUpdateTimeout = setTimeout(() => { diff --git a/plugins/view-resources/src/components/folders/FolderTreeLevel.svelte b/plugins/view-resources/src/components/folders/FolderTreeLevel.svelte index 93323762a9..7a7c181134 100644 --- a/plugins/view-resources/src/components/folders/FolderTreeLevel.svelte +++ b/plugins/view-resources/src/components/folders/FolderTreeLevel.svelte @@ -33,19 +33,19 @@ const client = getClient() - function getTitle (doc: Doc): string { + function getTitle(doc: Doc): string { return (doc as any)?.title || '' } - function getDescendants (obj: Ref): Ref[] { + function getDescendants(obj: Ref): Ref[] { return (descendants.get(obj) ?? []).sort((a, b) => getTitle(a).localeCompare(getTitle(b))).map((p) => p._id) } - function handleSelected (obj: Ref): void { + function handleSelected(obj: Ref): void { dispatch('selected', obj) } - async function getActions (obj: Doc): Promise { + async function getActions(obj: Doc): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, obj) for (const act of extraActions) { diff --git a/plugins/view-resources/src/components/folders/FoldersBrowser.svelte b/plugins/view-resources/src/components/folders/FoldersBrowser.svelte index 5ae3aac572..3695fba099 100644 --- a/plugins/view-resources/src/components/folders/FoldersBrowser.svelte +++ b/plugins/view-resources/src/components/folders/FoldersBrowser.svelte @@ -42,7 +42,7 @@ return (getLocation()?.query?.attachedTo as Ref) ?? noParentId } - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false const client = getClient() @@ -81,7 +81,7 @@ } ) - async function handleFolderSelected (_id: Ref): Promise { + async function handleFolderSelected(_id: Ref): Promise { if (getFolderLink !== undefined) { const getFolderLinkFunction = await getResource(getFolderLink) navigate(getFolderLinkFunction(_id)) @@ -91,11 +91,11 @@ dispatch('select', _id) } - async function handleAllItemsSelected (): Promise { + async function handleAllItemsSelected(): Promise { await handleFolderSelected(noParentId) } - async function getFolderActions (obj: Doc): Promise { + async function getFolderActions(obj: Doc): Promise { const result: Action[] = [] const extraActions = await getContributedActions(client, obj) for (const act of extraActions) { @@ -111,7 +111,7 @@ return result } - async function getRootActions (): Promise { + async function getRootActions(): Promise { return [] } @@ -126,7 +126,7 @@ type={'nested-selectable'} empty={foldersState?.folders?.length === 0} actions={() => getRootActions()} - {forciblyСollapsed} + {forciblyCollapsed} on:click={handleAllItemsSelected} > - {#if (selected || forciblyСollapsed) && visibleItem !== undefined} + {#if (selected || forciblyCollapsed) && visibleItem !== undefined} {@const folder = visibleItem} await getFolderActions(folder)} shouldTooltip - forciblyСollapsed + forciblyCollapsed /> {/if} diff --git a/plugins/view-resources/src/components/linkPresenters/GithubPresenter.svelte b/plugins/view-resources/src/components/linkPresenters/GithubPresenter.svelte index a2857ceff3..5e73cb259e 100644 --- a/plugins/view-resources/src/components/linkPresenters/GithubPresenter.svelte +++ b/plugins/view-resources/src/components/linkPresenters/GithubPresenter.svelte @@ -36,7 +36,7 @@ labels: Label[] } - async function getData (href: string): Promise { + async function getData(href: string): Promise { let params = href.replace(/(http.:\/\/)?(www.)?github.com\//, '') params = params.replace('/pull/', '/pulls/') const res = await (await fetch(`https://api.github.com/repos/${params}`)).json() @@ -54,7 +54,7 @@ } } - function format (body: string | undefined): string | undefined { + function format(body: string | undefined): string | undefined { if (!body) return undefined return body .replace(/[\r?\n]+/g, '
') diff --git a/plugins/view-resources/src/components/linkPresenters/YoutubePresenter.svelte b/plugins/view-resources/src/components/linkPresenters/YoutubePresenter.svelte index dcb7ebc1d4..99fb74d38d 100644 --- a/plugins/view-resources/src/components/linkPresenters/YoutubePresenter.svelte +++ b/plugins/view-resources/src/components/linkPresenters/YoutubePresenter.svelte @@ -32,7 +32,7 @@ let played = false - async function getData (href: string): Promise { + async function getData(href: string): Promise { const res = await ( await fetch(`https://www.youtube.com/oembed?url=${href}&format=json&maxwidth=${maxWidth}&maxheight=${maxHeight}`) ).json() @@ -46,7 +46,7 @@ } } - function setHeigh (emb: HTMLElement): void { + function setHeigh(emb: HTMLElement): void { const child = emb.firstElementChild as HTMLElement child.style.height = `${height}px` child.setAttribute('height', `${height}px`) diff --git a/plugins/view-resources/src/components/list/List.svelte b/plugins/view-resources/src/components/list/List.svelte index 859779d70f..0937e88979 100644 --- a/plugins/view-resources/src/components/list/List.svelte +++ b/plugins/view-resources/src/components/list/List.svelte @@ -178,7 +178,7 @@ $: docs = [...fastDocs, ...slowDocs.filter((it) => !fastQueryIds.has(it._id))] - function getProjection (fields: string[], query: DocumentQuery, _class: Ref>): Record { + function getProjection(fields: string[], query: DocumentQuery, _class: Ref>): Record { const res: Record = {} for (const f of fields) { /* @@ -203,7 +203,7 @@ return res } - function noLookup (query: DocumentQuery): DocumentQuery { + function noLookup(query: DocumentQuery): DocumentQuery { const newQuery: DocumentQuery = {} for (const [k, v] of Object.entries(query)) { if (!k.startsWith('$lookup.')) { @@ -213,7 +213,7 @@ return newQuery } - function noLookupSortingOptions (options: FindOptions): FindOptions { + function noLookupSortingOptions(options: FindOptions): FindOptions { const { lookup, sort, ...resultOptions } = options return resultOptions } @@ -222,12 +222,12 @@ $: dispatch('content', docs) - function uncheckAll (): void { + function uncheckAll(): void { dispatch('check', { docs, value: false }) selectedObjectIds = [] } - export function select (offset: 2 | -2 | 1 | -1 | 0, of?: Doc, noScroll?: boolean): void { + export function select(offset: 2 | -2 | 1 | -1 | 0, of?: Doc, noScroll?: boolean): void { if (of !== undefined || offset !== 0) { listCategories?.select(offset, of, undefined, noScroll) } diff --git a/plugins/view-resources/src/components/list/ListCategories.svelte b/plugins/view-resources/src/components/list/ListCategories.svelte index 3344c7e606..dbef904f21 100644 --- a/plugins/view-resources/src/components/list/ListCategories.svelte +++ b/plugins/view-resources/src/components/list/ListCategories.svelte @@ -130,7 +130,7 @@ } ) - function update (): void { + function update(): void { void updateCategories(_class, space, docs, groupByKey, viewOptions, viewOptionsConfig) } @@ -183,7 +183,7 @@ $: void buildModels(_class, config, configurations) - function getInitIndex (categories: any, i: number): number { + function getInitIndex(categories: any, i: number): number { let res = initIndex for (let index = 0; index < i; index++) { const cat = categories[index] @@ -196,7 +196,7 @@ const dispatch = createEventDispatcher() - function getState (doc: Doc): number { + function getState(doc: Doc): number { let pos = 0 for (const st of categories) { const stateObjs = getGroupByValues(groupByDocs, st) ?? [] @@ -208,7 +208,7 @@ return -1 } - export function select ( + export function select( offset: 2 | 1 | -2 | -1 | 0, of?: Doc, dir?: 'vertical' | 'horizontal', @@ -357,14 +357,14 @@ listCategory[objState]?.select(offset, of, dir, noScroll) } } - function scrollInto (statePos: number, obj: Doc): void { + function scrollInto(statePos: number, obj: Doc): void { listListCategory[statePos]?.scroll(obj) listCategory[statePos]?.scroll(obj) } const listCategory: SvelteComponentTyped[] = [] const listListCategory: ListCategory[] = [] - function getGroupByKey ( + function getGroupByKey( docKeys: Partial>>, category: CategoryType, resultQuery: DocumentQuery> diff --git a/plugins/view-resources/src/components/list/ListCategory.svelte b/plugins/view-resources/src/components/list/ListCategory.svelte index 665615ed03..9a289299ea 100644 --- a/plugins/view-resources/src/components/list/ListCategory.svelte +++ b/plugins/view-resources/src/components/list/ListCategory.svelte @@ -118,7 +118,7 @@ } } - function noSearch (query: DocumentQuery): DocumentQuery { + function noSearch(query: DocumentQuery): DocumentQuery { const result = query if ('$search' in result) { delete result.$search @@ -129,9 +129,9 @@ $: finalResultQuery = itemProj.length < 20 && resultQuery.$search !== null ? noSearch({ - ...resultQuery, - _id: { $in: itemProj.map((it) => it._id) } - }) + ...resultQuery, + _id: { $in: itemProj.map((it) => it._id) } + }) : resultQuery $: if (lastLevel) { @@ -167,12 +167,12 @@ const dispatch = createEventDispatcher() - function limitGroup (items: Doc[], limit: number | undefined): Doc[] { + function limitGroup(items: Doc[], limit: number | undefined): Doc[] { const res = limit !== undefined ? items.slice(0, limit) : items return res } - function initCollapsed (singleCat: boolean, lastLevel: boolean, level: number): void { + function initCollapsed(singleCat: boolean, lastLevel: boolean, level: number): void { if (localStorage.getItem(categoryCollapseKey) === null) { collapsed = (!disableHeader && @@ -215,7 +215,7 @@ } } - function isSelected (doc: Doc, focusStore: FocusSelection): boolean { + function isSelected(doc: Doc, focusStore: FocusSelection): boolean { return focusStore.focus?._id === doc._id } @@ -225,7 +225,7 @@ let dragItemIndex: number | undefined - function dragswap (ev: MouseEvent, i: number): boolean { + function dragswap(ev: MouseEvent, i: number): boolean { if (dragItemIndex === undefined || !byRank) return false const s = dragItemIndex if (i < s) { @@ -236,19 +236,19 @@ return false } - function dragOverCat (ev: MouseEvent): void { + function dragOverCat(ev: MouseEvent): void { ev.preventDefault() ev.stopPropagation() } let div: HTMLDivElement - function isBorder (ev: MouseEvent, direction: 'top' | 'bottom'): boolean { + function isBorder(ev: MouseEvent, direction: 'top' | 'bottom'): boolean { const target = ev.target as HTMLDivElement return Math.abs(ev.clientY - target.getBoundingClientRect()[direction]) < 5 } - function dragEnterCat (ev: MouseEvent): void { + function dragEnterCat(ev: MouseEvent): void { ev.preventDefault() if (dragItemIndex === undefined && dragItem.doc !== undefined) { const index = items.findIndex((p) => p._id === dragItem.doc?._id) @@ -273,7 +273,7 @@ } } - function dragLeaveCat (ev: MouseEvent): void { + function dragLeaveCat(ev: MouseEvent): void { ev.stopPropagation() if (dragItemIndex !== undefined) { items.splice(dragItemIndex, 1) @@ -282,7 +282,7 @@ } } - function dragItemLeave (ev: MouseEvent, i: number): void { + function dragItemLeave(ev: MouseEvent, i: number): void { if (dragItemIndex !== undefined) { const isLastItem = i === limited.length - 1 const isFirstItemWithoutHeader = i === 0 && disableHeader @@ -297,7 +297,7 @@ } } - function dragover (ev: MouseEvent, i: number): void { + function dragover(ev: MouseEvent, i: number): void { if (dragItemIndex === undefined || !lastLevel) return ev.preventDefault() ev.stopPropagation() @@ -310,7 +310,7 @@ } } - function dropItemHandle (ev: MouseEvent): void { + function dropItemHandle(ev: MouseEvent): void { ev.stopPropagation() ev.preventDefault() const update: DocumentUpdate = {} @@ -327,7 +327,7 @@ void drop(update) } - async function drop (update: DocumentUpdate = {}): Promise { + async function drop(update: DocumentUpdate = {}): Promise { if (dragItem.doc !== undefined) { const props = _newObjectProps(dragItem.doc) if (props !== undefined) { @@ -364,13 +364,13 @@ } } - function dragStartHandler (e: CustomEvent): void { + function dragStartHandler(e: CustomEvent): void { const { target, index } = e.detail dragItemIndex = index ;(target as EventTarget).addEventListener('dragend', (e) => dragEndListener(e, index)) } - function dragStart (ev: DragEvent, docObject: Doc, i: number): void { + function dragStart(ev: DragEvent, docObject: Doc, i: number): void { if (ev.dataTransfer != null) { ev.dataTransfer.effectAllowed = 'move' ev.dataTransfer.dropEffect = 'move' @@ -392,11 +392,11 @@ index: i }) } - export function expand (): void { + export function expand(): void { collapsed = false localStorage.setItem(categoryCollapseKey, 'false') } - export function scroll (item: Doc): void { + export function scroll(item: Doc): void { const pos = limited.findIndex((it) => it._id === item._id) if (pos >= 0) { if (collapsed) { @@ -411,13 +411,13 @@ } } - export function getLimited (): Doc[] { + export function getLimited(): Doc[] { return limited } const listItems: ListItem[] = [] - function getDocItemModel (docClass: Ref>): AttributeModel[] { + function getDocItemModel(docClass: Ref>): AttributeModel[] { let res = itemModels.get(docClass) if (res) { return res diff --git a/plugins/view-resources/src/components/list/ListItem.svelte b/plugins/view-resources/src/components/list/ListItem.svelte index 7f3cc5ca05..b60944ec0f 100644 --- a/plugins/view-resources/src/components/list/ListItem.svelte +++ b/plugins/view-resources/src/components/list/ListItem.svelte @@ -34,7 +34,7 @@ export let compactMode: boolean = false export let readonly: boolean = false - export function scroll () { + export function scroll() { elem?.scrollIntoView({ behavior: 'auto', block: 'nearest' }) } @@ -42,21 +42,21 @@ const dispatch = createEventDispatcher() - export function getDoc () { + export function getDoc() { return docObject } - export function getElement () { + export function getElement() { return elem } const client = getClient() - function onChange (value: any, doc: Doc, key: string, attribute: AnyAttribute) { + function onChange(value: any, doc: Doc, key: string, attribute: AnyAttribute) { updateAttribute(client, doc, doc._class, { key, attr: attribute }, value) } - function getOnChange (docObject: Doc, attribute: AttributeModel) { + function getOnChange(docObject: Doc, attribute: AttributeModel) { const attr = attribute.attribute if (attr === undefined) return if (attribute.collectionAttr) return diff --git a/plugins/view-resources/src/components/list/ListPresenter.svelte b/plugins/view-resources/src/components/list/ListPresenter.svelte index b67997f03e..5ba86d50d5 100644 --- a/plugins/view-resources/src/components/list/ListPresenter.svelte +++ b/plugins/view-resources/src/components/list/ListPresenter.svelte @@ -35,7 +35,7 @@ $: dp = attributeModel?.displayProps - function joinProps (attribute: AttributeModel, object: Doc, props: Record, readonly: boolean) { + function joinProps(attribute: AttributeModel, object: Doc, props: Record, readonly: boolean) { const readonlyParams = readonly || (attribute?.attribute?.readonly ?? false) ? { @@ -62,7 +62,7 @@ permissionsStore = await getResource(contact.store.Permissions) }) - function canChangeAttr ( + function canChangeAttr( object: Doc, attr: AnyAttribute | undefined, permissionsStore: PermissionsStore | undefined diff --git a/plugins/view-resources/src/components/list/SortableDocList.svelte b/plugins/view-resources/src/components/list/SortableDocList.svelte index 1c633bc0d0..450b2830ac 100644 --- a/plugins/view-resources/src/components/list/SortableDocList.svelte +++ b/plugins/view-resources/src/components/list/SortableDocList.svelte @@ -45,7 +45,7 @@ let presenter: typeof SvelteComponent | undefined let items: Doc[] = [] - async function updatePresenter (classRef: Ref>) { + async function updatePresenter(classRef: Ref>) { try { isPresenterLoading = true @@ -64,7 +64,7 @@ } } - function updateItems (newItems: FindResult): void { + function updateItems(newItems: FindResult): void { items = newItems areItemsloading = false } @@ -78,7 +78,7 @@ $: isSortable = hierarchy.getAllAttributes(_class).has('rank') - async function handleMove ( + async function handleMove( e: CustomEvent<{ item: DocWithRank, prev: DocWithRank | undefined, next: DocWithRank | undefined }> ): Promise { if (!isSortable) return diff --git a/plugins/view-resources/src/components/list/SortableList.svelte b/plugins/view-resources/src/components/list/SortableList.svelte index 7ae277cae1..a0f1eab9f1 100644 --- a/plugins/view-resources/src/components/list/SortableList.svelte +++ b/plugins/view-resources/src/components/list/SortableList.svelte @@ -31,7 +31,7 @@ let draggingIndex: number | null = null let hoveringIndex: number | null = null - function handleDragStart (ev: DragEvent, itemIndex: number) { + function handleDragStart(ev: DragEvent, itemIndex: number) { if (ev.dataTransfer) { ev.dataTransfer.effectAllowed = 'move' ev.dataTransfer.dropEffect = 'move' @@ -40,7 +40,7 @@ draggingIndex = itemIndex } - function handleDragOver (ev: DragEvent, itemIndex: number) { + function handleDragOver(ev: DragEvent, itemIndex: number) { ev.preventDefault() hoveringIndex = itemIndex @@ -48,7 +48,7 @@ const dispatch = createEventDispatcher() - async function handleDrop (itemIndex: number) { + async function handleDrop(itemIndex: number) { if (draggingIndex !== null && draggingIndex !== itemIndex) { const item = items[draggingIndex] const [prev, next] = [ @@ -64,7 +64,7 @@ resetDrag() } - function resetDrag () { + function resetDrag() { draggingIndex = null hoveringIndex = null } diff --git a/plugins/view-resources/src/components/masterDetail/MasterDetailBrowser.svelte b/plugins/view-resources/src/components/masterDetail/MasterDetailBrowser.svelte index 8644c303e1..96f1eaec0f 100644 --- a/plugins/view-resources/src/components/masterDetail/MasterDetailBrowser.svelte +++ b/plugins/view-resources/src/components/masterDetail/MasterDetailBrowser.svelte @@ -71,7 +71,7 @@ ) } - function onSelected (e: CustomEvent): void { + function onSelected(e: CustomEvent): void { dispatch('select', e.detail) if (syncWithLocationQuery) return parentQuery = { [parentKey]: e.detail } diff --git a/plugins/view-resources/src/components/masterDetail/MasterDetailView.svelte b/plugins/view-resources/src/components/masterDetail/MasterDetailView.svelte index 3ff938ae86..142980a785 100644 --- a/plugins/view-resources/src/components/masterDetail/MasterDetailView.svelte +++ b/plugins/view-resources/src/components/masterDetail/MasterDetailView.svelte @@ -39,7 +39,7 @@ $: void getViewlets(viewlet?._id) - async function getViewlets (viewletId: Ref): Promise { + async function getViewlets(viewletId: Ref): Promise { if (viewlet === undefined) return const views: MasterDetailConfig[] = viewlet?.masterDetailOptions?.views ?? [] const results = await client.findAll(view.class.ViewletDescriptor, { _id: { $in: [views[0].view, views[1].view] } }) @@ -47,7 +47,7 @@ detailView = results.find((v) => v._id === views[1].view) } - async function selected (e: CustomEvent): Promise { + async function selected(e: CustomEvent): Promise { const views: MasterDetailConfig[] = viewlet?.masterDetailOptions?.views ?? [] if (detailView === undefined) return if (detailView?._id === view.viewlet.Document) { diff --git a/plugins/view-resources/src/components/navigator/NavLink.svelte b/plugins/view-resources/src/components/navigator/NavLink.svelte index 39fd9864a7..0f2555ab1e 100644 --- a/plugins/view-resources/src/components/navigator/NavLink.svelte +++ b/plugins/view-resources/src/components/navigator/NavLink.svelte @@ -28,7 +28,7 @@ $: href = locationToUrl(loc) - function createLocation ( + function createLocation( loc: Location, app: string | undefined, space: string | undefined, @@ -66,7 +66,7 @@ return location } - function clickHandler (e: MouseEvent): void { + function clickHandler(e: MouseEvent): void { if (e.metaKey || e.ctrlKey) return e.preventDefault() setFilters([]) diff --git a/plugins/view-resources/src/components/navigator/TreeElement.svelte b/plugins/view-resources/src/components/navigator/TreeElement.svelte index 210491bc24..69aadfb67e 100644 --- a/plugins/view-resources/src/components/navigator/TreeElement.svelte +++ b/plugins/view-resources/src/components/navigator/TreeElement.svelte @@ -53,7 +53,7 @@ export let showMenu: boolean = false export let noDivider: boolean = false export let showNotify: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false export let actions: (originalEvent?: MouseEvent) => Promise = async () => [] export let draggable: boolean = false @@ -68,7 +68,7 @@ }) } - async function onMenuClick (ev: MouseEvent): Promise { + async function onMenuClick(ev: MouseEvent): Promise { // Read actual popup actions on open as visibility might have been changed pressed = true popupMenuActions = await actions().then((res) => res.filter((action) => action.inline !== true)) @@ -77,7 +77,7 @@ }) } - async function onInlineClick (ev: MouseEvent, action: Action): Promise { + async function onInlineClick(ev: MouseEvent, action: Action): Promise { action.action([], ev) } @@ -100,7 +100,7 @@ {isFold} {empty} {visible} - {forciblyСollapsed} + {forciblyCollapsed} {shouldTooltip} showMenu={showMenu || pressed} {noDivider} @@ -169,7 +169,7 @@ {isFold} {empty} {visible} - {forciblyСollapsed} + {forciblyCollapsed} {level} {shouldTooltip} {draggable} diff --git a/plugins/view-resources/src/components/navigator/TreeItem.svelte b/plugins/view-resources/src/components/navigator/TreeItem.svelte index 5f03a55c8b..3142c83dd8 100644 --- a/plugins/view-resources/src/components/navigator/TreeItem.svelte +++ b/plugins/view-resources/src/components/navigator/TreeItem.svelte @@ -38,7 +38,7 @@ export let level: number = 0 export let shouldTooltip: boolean = false export let showNotify: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false export let collapsedPrefix: string = '' export let draggable: boolean = false @@ -64,7 +64,7 @@ {level} {showMenu} {noDivider} - {forciblyСollapsed} + {forciblyCollapsed} {draggable} on:click on:dragstart diff --git a/plugins/view-resources/src/components/navigator/TreeNode.svelte b/plugins/view-resources/src/components/navigator/TreeNode.svelte index 65118e0f7d..2cf38a7ffc 100644 --- a/plugins/view-resources/src/components/navigator/TreeNode.svelte +++ b/plugins/view-resources/src/components/navigator/TreeNode.svelte @@ -38,7 +38,7 @@ export let showMenu: boolean = false export let noDivider: boolean = false export let shouldTooltip: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false export let draggable: boolean = false @@ -63,7 +63,7 @@ {shouldTooltip} {showMenu} {noDivider} - {forciblyСollapsed} + {forciblyCollapsed} {draggable} on:click on:dragstart diff --git a/plugins/view-resources/src/components/relation/AddRelationPopup.svelte b/plugins/view-resources/src/components/relation/AddRelationPopup.svelte index 6bbf559b50..524278f1f7 100644 --- a/plugins/view-resources/src/components/relation/AddRelationPopup.svelte +++ b/plugins/view-resources/src/components/relation/AddRelationPopup.svelte @@ -25,7 +25,7 @@ const h = client.getHierarchy() const dispatch = createEventDispatcher() - function getCommonClass (value: Doc | Doc[]): Ref> | undefined { + function getCommonClass(value: Doc | Doc[]): Ref> | undefined { if (Array.isArray(value)) { if (value.length === 0) { return undefined @@ -49,7 +49,7 @@ $: items = getItems(value) - function getItems (value: Doc | Doc[]): Item[] { + function getItems(value: Doc | Doc[]): Item[] { const _class = getCommonClass(value) if (_class === undefined) return [] const descendants = h.getDescendants(_class) @@ -79,7 +79,7 @@ let selected: Item | undefined = undefined - async function save (): Promise { + async function save(): Promise { if (selected === undefined || target === undefined) return const objects = Array.isArray(value) ? value : [value] for (const obj of objects) { diff --git a/plugins/view-resources/src/components/viewer/AudioPlayer.svelte b/plugins/view-resources/src/components/viewer/AudioPlayer.svelte index eca4cde120..c7d52d2e1b 100644 --- a/plugins/view-resources/src/components/viewer/AudioPlayer.svelte +++ b/plugins/view-resources/src/components/viewer/AudioPlayer.svelte @@ -29,7 +29,7 @@ let duration = Number.POSITIVE_INFINITY let paused = true - function handleClick (): void { + function handleClick(): void { paused = !paused } diff --git a/plugins/view-resources/src/components/viewer/ImageViewer.svelte b/plugins/view-resources/src/components/viewer/ImageViewer.svelte index 9b2c627eca..a7ad5fcad2 100644 --- a/plugins/view-resources/src/components/viewer/ImageViewer.svelte +++ b/plugins/view-resources/src/components/viewer/ImageViewer.svelte @@ -40,7 +40,7 @@ $: height = imageHeight != null ? `min(${imageHeight}px, ${fit ? '100%' : '80vh'})` : '100%' let loading = true - function _setLoading (newState: boolean): void { + function _setLoading(newState: boolean): void { loading = newState setLoading?.(loading) } diff --git a/plugins/view-resources/src/components/viewer/TextViewer.svelte b/plugins/view-resources/src/components/viewer/TextViewer.svelte index 96e505a39e..5bb8eaff56 100644 --- a/plugins/view-resources/src/components/viewer/TextViewer.svelte +++ b/plugins/view-resources/src/components/viewer/TextViewer.svelte @@ -26,7 +26,7 @@ let loading = true let text: string | undefined = undefined - async function fetchFile (value: Ref, name: string): Promise { + async function fetchFile(value: Ref, name: string): Promise { loading = true const src = getFileUrl(value, name) diff --git a/plugins/view-resources/src/filter/query-builder.ts b/plugins/view-resources/src/filter/query-builder.ts index 932e7f8d50..d39d83df41 100644 --- a/plugins/view-resources/src/filter/query-builder.ts +++ b/plugins/view-resources/src/filter/query-builder.ts @@ -31,7 +31,7 @@ type ResultFn = (filter: Filter, refresh: () => void) => Promise * parameter so unit tests can inject a mock without spinning up the full * plugin runtime. */ -const defaultResolveResource: ResourceResolver = async (r: Resource) => await getResource(r) +const defaultResolveResource: ResourceResolver = async (r: Resource) => await getResource(r) /** * Keys that must never be written through dynamic property assignment: @@ -73,7 +73,7 @@ export async function makeFilterQuery ( const filter = filters[i] const mode = await resolveMode(filter.mode) if (mode === undefined) continue - const resultFn = await resolveResource(mode.result as unknown as Resource) + const resultFn = await resolveResource(mode.result) const result: any = await resultFn(filter, refresh) let filterKey = filter.key.key diff --git a/plugins/view-resources/src/middleware.ts b/plugins/view-resources/src/middleware.ts index a3e6dcf4d4..4c486fe7b1 100644 --- a/plugins/view-resources/src/middleware.ts +++ b/plugins/view-resources/src/middleware.ts @@ -85,16 +85,16 @@ export class AggregationMiddleware extends BasePresentationMiddleware implements } } - async subscribe( + async subscribe ( _class: Ref>, query: DocumentQuery, options: FindOptions | undefined, refresh: () => void ): Promise<{ - unsubscribe: () => void - query?: DocumentQuery - options?: FindOptions - }> { + unsubscribe: () => void + query?: DocumentQuery + options?: FindOptions + }> { const ret = await this.provideSubscribe(_class, query, options, refresh) const h = this.client.getHierarchy() @@ -188,7 +188,7 @@ export class AggregationMiddleware extends BasePresentationMiddleware implements return mgr } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions | undefined @@ -205,7 +205,7 @@ export class AggregationMiddleware extends BasePresentationMiddleware implements return await this.provideFindAll(_class, fquery, finalOptions) } - private async updateQueryOptions( + private async updateQueryOptions ( allAttrs: Map, h: Hierarchy, docFields: Array>, diff --git a/plugins/view-resources/src/utils.ts b/plugins/view-resources/src/utils.ts index 29e1f6c160..771567aca2 100644 --- a/plugins/view-resources/src/utils.ts +++ b/plugins/view-resources/src/utils.ts @@ -145,7 +145,7 @@ export class AggregationManager implements IAggregationManager void this.getManager() } - static create( + static create ( client: Client, lqCallback: () => void, setStore: (manager: DocManager) => void, @@ -169,7 +169,7 @@ export class AggregationManager implements IAggregationManager (res) => { const first = this.docs === undefined this.docs = res - this.mgr = new DocManager(res as T[]) + this.mgr = new DocManager(res) this.setStore(this.mgr) if (!first) { this.lqCallback() @@ -789,7 +789,7 @@ export async function deleteObjects (client: TxOperations, objects: Doc[], skipC } export function getMixinStyle (id: Ref>, selected: boolean, black: boolean): string { - const color = getPlatformColorForText(id as string, black) + const color = getPlatformColorForText(id, black) return ` color: ${selected ? '#fff' : 'var(--caption-color)'}; background: ${color + (selected ? 'ff' : '33')}; @@ -912,9 +912,9 @@ export function categorizeFields ( useAsCollection: string[], useAsAttribute: string[] ): { - attributes: CategoryKey[] - collections: CategoryKey[] - } { + attributes: CategoryKey[] + collections: CategoryKey[] +} { const result = { attributes: [] as CategoryKey[], collections: [] as CategoryKey[] @@ -1143,9 +1143,9 @@ export function getCategorySpaces (categories: CategoryType[]): Array categories .filter((it) => typeof it === 'object') .reduce>>((arr, val) => { - val.values.forEach((it) => arr.add(it.space)) - return arr - }, new Set()) + val.values.forEach((it) => arr.add(it.space)) + return arr + }, new Set()) ) } @@ -1781,10 +1781,10 @@ export async function getDocAttrsInfo ( allowedCollections: string[] = [], collectionArrays: string[] = [] ): Promise<{ - keys: KeyedAttribute[] - inplaceAttributes: string[] - editors: Array<{ key: KeyedAttribute, editor: AnyComponent, category: AttributeCategory }> - }> { + keys: KeyedAttribute[] + inplaceAttributes: string[] + editors: Array<{ key: KeyedAttribute, editor: AnyComponent, category: AttributeCategory }> +}> { const client = getClient() const hierarchy = client.getHierarchy() diff --git a/plugins/view-resources/src/viewletUtils.ts b/plugins/view-resources/src/viewletUtils.ts index 315000e490..771c14f9ab 100644 --- a/plugins/view-resources/src/viewletUtils.ts +++ b/plugins/view-resources/src/viewletUtils.ts @@ -31,7 +31,7 @@ export function getViewletSpecialActions (client: Client, viewlet: Viewlet): Res if (actions == null || actions.length === 0) { actions = model.findAllSync(view.class.ViewletViewAction, { descriptor: viewlet.descriptor - }) as ViewletViewAction[] + }) } if (actions == null || actions.length === 0) { diff --git a/plugins/view/.eslintrc.js b/plugins/view/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/view/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/view/eslint.config.mjs b/plugins/view/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/view/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/view/package.json b/plugins/view/package.json index 784ce5db89..9c9b70c8e2 100644 --- a/plugins/view/package.json +++ b/plugins/view/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/plugins/view/src/types.ts b/plugins/view/src/types.ts index a9e2649de0..54e7c90ed5 100644 --- a/plugins/view/src/types.ts +++ b/plugins/view/src/types.ts @@ -350,12 +350,12 @@ export interface ListHeaderExtra extends Class { * @public */ export type SortFunc = Resource< -( - client: TxOperations, - values: PrimitiveType[], - space: Ref | undefined, - viewletDescriptorId?: Ref -) => Promise + ( + client: TxOperations, + values: PrimitiveType[], + space: Ref | undefined, + viewletDescriptorId?: Ref + ) => Promise > /** @@ -369,12 +369,12 @@ export interface ClassSortFuncs extends Class { * @public */ export type GetAllValuesFunc = Resource< -( - query: DocumentQuery | undefined, - onUpdate: () => void, - queryId: Ref, - attr: AnyAttribute -) => Promise + ( + query: DocumentQuery | undefined, + onUpdate: () => void, + queryId: Ref, + attr: AnyAttribute + ) => Promise > /** @@ -431,13 +431,13 @@ export type AggregationManagerResource = Resource> * @public */ export type CreateAggregationManagerFunc = Resource< -( - client: Client, - lqCallback: () => void, - setStore: (manager: DocManager) => void, - categorizingFunc: (doc: any, target: any) => boolean, - _class: Ref> -) => IAggregationManager + ( + client: Client, + lqCallback: () => void, + setStore: (manager: DocManager) => void, + categorizingFunc: (doc: any, target: any) => boolean, + _class: Ref> + ) => IAggregationManager > /** @@ -771,7 +771,7 @@ export interface ViewOption { * @public */ export type ViewOptionsAction = Resource< -(value: any, query: FindOptions | undefined) => FindOptions + (value: any, query: FindOptions | undefined) => FindOptions > /** @@ -811,7 +811,7 @@ export interface CategoryOption extends ViewOption { * @public */ export type ViewQueryAction = Resource< -(value: any, query: DocumentQuery) => DocumentQuery | Promise> + (value: any, query: DocumentQuery) => DocumentQuery | Promise> > /** diff --git a/plugins/workbench-assets/.eslintrc.js b/plugins/workbench-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/plugins/workbench-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/workbench-assets/eslint.config.mjs b/plugins/workbench-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/plugins/workbench-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/plugins/workbench-assets/package.json b/plugins/workbench-assets/package.json index 5b77f290fd..1b59f6cdda 100644 --- a/plugins/workbench-assets/package.json +++ b/plugins/workbench-assets/package.json @@ -26,19 +26,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -54,8 +54,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/plugins/workbench-assets/src/lang.ts b/plugins/workbench-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/plugins/workbench-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/plugins/workbench-resources/.eslintrc.js b/plugins/workbench-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/plugins/workbench-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/plugins/workbench-resources/eslint.config.mjs b/plugins/workbench-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/plugins/workbench-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/plugins/workbench-resources/package.json b/plugins/workbench-resources/package.json index a9181da30a..7cf324c05c 100644 --- a/plugins/workbench-resources/package.json +++ b/plugins/workbench-resources/package.json @@ -19,22 +19,21 @@ "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-svelte": "^2.35.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-svelte": "^3.23.0", "prettier-plugin-svelte": "^3.4.0", - "eslint": "^8.54.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "svelte": "^4.2.20", diff --git a/plugins/workbench-resources/src/components/AccountPopup.svelte b/plugins/workbench-resources/src/components/AccountPopup.svelte index 3da17fceca..3ed710a567 100644 --- a/plugins/workbench-resources/src/components/AccountPopup.svelte +++ b/plugins/workbench-resources/src/components/AccountPopup.svelte @@ -81,7 +81,7 @@ ? contactResources.string.WorkspaceStatusUpdateYour : contactResources.string.WorkspaceStatusSetYour - function selectCategory (sp?: SettingsCategory): void { + function selectCategory(sp?: SettingsCategory): void { closePopup() const loc = getCurrentResolvedLocation() loc.fragment = undefined @@ -96,27 +96,27 @@ navigate(loc) } - function inviteWorkspace (): void { + function inviteWorkspace(): void { showPopup(login.component.InviteLink, {}) } - function helpAndSupport (): void { + function helpAndSupport(): void { showPopup(HelpAndSupport, {}, 'help-center') } - function filterItems (items: SettingsCategory[], keys: string[]): SettingsCategory[] { + function filterItems(items: SettingsCategory[], keys: string[]): SettingsCategory[] { return items.filter( (p) => p._id !== setting.ids.Profile && p._id !== setting.ids.Password && keys.includes(p.group ?? '') ) } - function editProfile (items: SettingsCategory[]): void { + function editProfile(items: SettingsCategory[]): void { const profile = items.find((p) => p._id === setting.ids.Profile) if (profile === undefined) return selectCategory(profile) } - function getURLCategory (sp: SettingsCategory): string { + function getURLCategory(sp: SettingsCategory): string { const loc = getCurrentResolvedLocation() loc.path[2] = settingId loc.path[3] = sp.name diff --git a/plugins/workbench-resources/src/components/AppSwitcher.svelte b/plugins/workbench-resources/src/components/AppSwitcher.svelte index 28079f310a..8b91566fe9 100644 --- a/plugins/workbench-resources/src/components/AppSwitcher.svelte +++ b/plugins/workbench-resources/src/components/AppSwitcher.svelte @@ -27,7 +27,7 @@ let activeElement: HTMLElement const btns: HTMLElement[] = [] - function focusTarget (target: HTMLElement): void { + function focusTarget(target: HTMLElement): void { activeElement = target } @@ -77,7 +77,7 @@ !isExcludedApp(it.alias) ) - function isExcludedApp (alias: string): boolean { + function isExcludedApp(alias: string): boolean { const me = getCurrentAccount() if (me.role === AccountRole.ReadOnlyGuest || me.role === AccountRole.Guest) { diff --git a/plugins/workbench-resources/src/components/Applications.svelte b/plugins/workbench-resources/src/components/Applications.svelte index e000f92c20..e110a14c15 100644 --- a/plugins/workbench-resources/src/components/Applications.svelte +++ b/plugins/workbench-resources/src/components/Applications.svelte @@ -36,7 +36,7 @@ const dispatch = createEventDispatcher() - function getClickHandler (app: Application, customProps: any): () => void { + function getClickHandler(app: Application, customProps: any): () => void { return ( customProps.onClick ?? (() => { @@ -98,7 +98,7 @@ hasNewMessagesNotification = res.getResult().length > 0 }) - function updateExcludedApps (): void { + function updateExcludedApps(): void { const me = getCurrentAccount() if (me.role === AccountRole.ReadOnlyGuest || me.role === AccountRole.Guest) { @@ -147,7 +147,7 @@ hasInboxNotifications = res }) - function showNotify ( + function showNotify( alias: string, hasOldNotifications: boolean, hasNewNotifications: boolean, diff --git a/plugins/workbench-resources/src/components/ComponentNavigator.svelte b/plugins/workbench-resources/src/components/ComponentNavigator.svelte index 6027458eb8..56cccb81e7 100644 --- a/plugins/workbench-resources/src/components/ComponentNavigator.svelte +++ b/plugins/workbench-resources/src/components/ComponentNavigator.svelte @@ -73,12 +73,12 @@ ) } - function onSelected (e: CustomEvent): void { + function onSelected(e: CustomEvent): void { if (syncWithLocationQuery) return parentQuery = { [parentKey]: e.detail } } - function showCreateDialog (): void { + function showCreateDialog(): void { if (createComponent === undefined) return showPopup(createComponent, { ...createComponentProps, space }, 'top') } diff --git a/plugins/workbench-resources/src/components/HelpAndSupport.svelte b/plugins/workbench-resources/src/components/HelpAndSupport.svelte index f47032566d..8b3c430169 100644 --- a/plugins/workbench-resources/src/components/HelpAndSupport.svelte +++ b/plugins/workbench-resources/src/components/HelpAndSupport.svelte @@ -47,7 +47,7 @@ const client = getClient() - function navigateToSettings () { + function navigateToSettings() { closePopup() const loc = getCurrentResolvedLocation() loc.path[2] = loc.path[3] = settingId @@ -55,7 +55,7 @@ navigate(loc) } - async function getActions () { + async function getActions() { categories = await getClient().findAll(view.class.ActionCategory, []) const rawActions = await client.findAll(view.class.Action, []) diff --git a/plugins/workbench-resources/src/components/MetricsStats.svelte b/plugins/workbench-resources/src/components/MetricsStats.svelte index 6cd1d15cd2..47926480d4 100644 --- a/plugins/workbench-resources/src/components/MetricsStats.svelte +++ b/plugins/workbench-resources/src/components/MetricsStats.svelte @@ -10,7 +10,7 @@ const endpoint = getMetadata(presentation.metadata.StatsUrl) const token: string = getMetadata(presentation.metadata.Token) ?? '' - async function fetchStats (time: number): Promise { + async function fetchStats(time: number): Promise { await fetch(endpoint + `/api/v1/statistics?token=${token}&name=${serviceName}`, {}) .then(async (json) => { data = await json.json() diff --git a/plugins/workbench-resources/src/components/Navigator.svelte b/plugins/workbench-resources/src/components/Navigator.svelte index ca09ae04e3..d429765e67 100644 --- a/plugins/workbench-resources/src/components/Navigator.svelte +++ b/plugins/workbench-resources/src/components/Navigator.svelte @@ -80,7 +80,7 @@ }) let requestIndex = 0 - async function update (model: NavigatorModel, spaces: Space[], preferences: Map, SpacePreference>) { + async function update(model: NavigatorModel, spaces: Space[], preferences: Map, SpacePreference>) { shownSpaces = spaces.filter((sp) => !sp.archived && (model.hideStarred || !preferences.has(sp._id))) starred = model.hideStarred ? [] : spaces.filter((sp) => preferences.has(sp._id)) if (model.specials !== undefined) { @@ -106,7 +106,7 @@ $: if (model) update(model, spaces, preferences) - async function updateSpecials ( + async function updateSpecials( specials: SpecialNavModel[], spaces: Space[], requestIndex: number @@ -142,7 +142,7 @@ return [result, requestIndex] } - async function checkIsDisabled (special: SpecialNavModel) { + async function checkIsDisabled(special: SpecialNavModel) { return special.checkIsDisabled && (await (await getResource(special.checkIsDisabled))()) } diff --git a/plugins/workbench-resources/src/components/SavedView.svelte b/plugins/workbench-resources/src/components/SavedView.svelte index 4d1fc4ab2a..3ece0182d6 100644 --- a/plugins/workbench-resources/src/components/SavedView.svelte +++ b/plugins/workbench-resources/src/components/SavedView.svelte @@ -66,7 +66,7 @@ availableFilteredViews = [] } - async function removeAction (filteredView: FilteredView): Promise { + async function removeAction(filteredView: FilteredView): Promise { return [ { icon: view.icon.Delete, @@ -78,7 +78,7 @@ ] } - async function renameAction (object: FilteredView, originalEvent: MouseEvent | undefined): Promise { + async function renameAction(object: FilteredView, originalEvent: MouseEvent | undefined): Promise { return [ { icon: contact.icon.Edit, @@ -99,7 +99,7 @@ ] } - async function switchPublicAction (object: FilteredView, originalEvent: MouseEvent | undefined): Promise { + async function switchPublicAction(object: FilteredView, originalEvent: MouseEvent | undefined): Promise { return [ { icon: object.sharable ? TodoCheck : TodoUncheck, @@ -111,7 +111,7 @@ ] } - async function copyUrlAction (filteredView: FilteredView): Promise { + async function copyUrlAction(filteredView: FilteredView): Promise { return [ { icon: view.icon.CopyLink, @@ -134,7 +134,7 @@ ] } - async function viewAction (filteredView: FilteredView, originalEvent: MouseEvent | undefined): Promise { + async function viewAction(filteredView: FilteredView, originalEvent: MouseEvent | undefined): Promise { const copyUrl = await copyUrlAction(filteredView) const rename = await renameAction(filteredView, originalEvent) const setPublic = await switchPublicAction(filteredView, originalEvent) @@ -147,7 +147,7 @@ return [...hide, ...copyUrl] } - async function hideAction (object: FilteredView): Promise { + async function hideAction(object: FilteredView): Promise { return [ { icon: view.icon.Archive, @@ -161,7 +161,7 @@ let selectedId: Ref | undefined = undefined - async function load (fv: FilteredView): Promise { + async function load(fv: FilteredView): Promise { selectedFilterStore.set(fv) navigate({ path: fv.location.path, @@ -184,7 +184,7 @@ dispatch('select', false) } - function checkFilter ( + function checkFilter( fv: FilteredView, loc: Location, filters: string, @@ -201,7 +201,7 @@ return true } - function checkSelected ( + function checkSelected( fs: Filter[], loc: Location, filteredViews: FilteredView[] | undefined, @@ -234,7 +234,7 @@ $: shown = myFilteredViews.length > 0 || availableFilteredViews.length > 0 $: dispatch('shown', shown) - async function getActions (availableFilteredViews: FilteredView[]): Promise { + async function getActions(availableFilteredViews: FilteredView[]): Promise { if (availableFilteredViews.length > 0) { const filteredViewsIdMap = toIdMap(availableFilteredViews) const pushMeToFV = async (id: Ref): Promise => { diff --git a/plugins/workbench-resources/src/components/SelectWorkspaceMenu.svelte b/plugins/workbench-resources/src/components/SelectWorkspaceMenu.svelte index 360e22e099..0106b80535 100644 --- a/plugins/workbench-resources/src/components/SelectWorkspaceMenu.svelte +++ b/plugins/workbench-resources/src/components/SelectWorkspaceMenu.svelte @@ -62,14 +62,14 @@ const hasRating = hasResource(ratingPlugin.component.RatingRing) - function getWorkspaceLink (ws: WorkspaceInfoWithStatus): string { + function getWorkspaceLink(ws: WorkspaceInfoWithStatus): string { const loc: Location = { path: [workbenchId, ws.url] } return locationToUrl(loc) } - async function clickHandler (e: MouseEvent, wsUrl: string): Promise { + async function clickHandler(e: MouseEvent, wsUrl: string): Promise { if (!e.metaKey && !e.ctrlKey) { e.preventDefault() closePopup() @@ -94,7 +94,7 @@ let activeElement: HTMLElement const btns: HTMLElement[] = [] - function focusTarget (target: HTMLElement): void { + function focusTarget(target: HTMLElement): void { activeElement = target } @@ -147,11 +147,11 @@ $: activeSessions = (data?.statistics?.activeSessions as Record< - string, - Array<{ - userId: string - data?: Record - }> + string, + Array<{ + userId: string + data?: Record + }> >) ?? {} diff --git a/plugins/workbench-resources/src/components/ServerManagerGeneral.svelte b/plugins/workbench-resources/src/components/ServerManagerGeneral.svelte index fe66490b24..be5e55f455 100644 --- a/plugins/workbench-resources/src/components/ServerManagerGeneral.svelte +++ b/plugins/workbench-resources/src/components/ServerManagerGeneral.svelte @@ -34,7 +34,7 @@ let profiling = false - async function fetchStats (time: number): Promise { + async function fetchStats(time: number): Promise { await fetch(endpoint + '/api/v1/profiling', { method: 'GET', keepalive: true, @@ -55,7 +55,7 @@ $: void fetchStats($ticker) - function genData (dataSize: number): string { + function genData(dataSize: number): string { let result = '' const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' const charactersLength = characters.length @@ -65,7 +65,7 @@ return result } - async function doBenchmark (): Promise { + async function doBenchmark(): Promise { avgTime = 0 maxTime = 0 let count = commandsToSend @@ -112,7 +112,7 @@ running = false } - async function downloadProfile (): Promise { + async function downloadProfile(): Promise { const link = document.createElement('a') link.style.display = 'none' link.setAttribute('target', '_blank') @@ -134,7 +134,7 @@ let metrics: Metrics | undefined - function update (tick: number): void { + function update(tick: number): void { metrics = metricsAggregate(uiContext.metrics) } diff --git a/plugins/workbench-resources/src/components/ServerManagerServerStatistics.svelte b/plugins/workbench-resources/src/components/ServerManagerServerStatistics.svelte index cb368243a9..3bc808b771 100644 --- a/plugins/workbench-resources/src/components/ServerManagerServerStatistics.svelte +++ b/plugins/workbench-resources/src/components/ServerManagerServerStatistics.svelte @@ -9,7 +9,7 @@ const endpoint = getMetadata(presentation.metadata.StatsUrl) - async function fetchStats (time: number): Promise { + async function fetchStats(time: number): Promise { await fetch(endpoint + `/api/v1/overview?token=${token}`, {}) .then(async (json) => { data = await json.json() diff --git a/plugins/workbench-resources/src/components/ServerManagerUsers.svelte b/plugins/workbench-resources/src/components/ServerManagerUsers.svelte index 63c6e73af2..adfeb269ee 100644 --- a/plugins/workbench-resources/src/components/ServerManagerUsers.svelte +++ b/plugins/workbench-resources/src/components/ServerManagerUsers.svelte @@ -11,7 +11,7 @@ const token: string = getMetadata(presentation.metadata.Token) ?? '' const endpoint = getMetadata(presentation.metadata.StatsUrl) - async function fetchStats (time: number): Promise { + async function fetchStats(time: number): Promise { await fetch(endpoint + `/api/v1/overview?token=${token}`, {}) .then(async (json) => { data = await json.json() diff --git a/plugins/workbench-resources/src/components/SpaceContent.svelte b/plugins/workbench-resources/src/components/SpaceContent.svelte index b4ccafd6d2..d09dcfc571 100644 --- a/plugins/workbench-resources/src/components/SpaceContent.svelte +++ b/plugins/workbench-resources/src/components/SpaceContent.svelte @@ -42,7 +42,7 @@ $: searchQuery = search === '' ? { space, ...query } : { $search: search, space, ...query } $: resultQuery = searchQuery - function buildQuery ( + function buildQuery( space: Ref, baseQuery: DocumentQuery | undefined, viewlet: WithLookup | undefined diff --git a/plugins/workbench-resources/src/components/SpaceHeader.svelte b/plugins/workbench-resources/src/components/SpaceHeader.svelte index 6a5a63a33b..0d6f94412d 100644 --- a/plugins/workbench-resources/src/components/SpaceHeader.svelte +++ b/plugins/workbench-resources/src/components/SpaceHeader.svelte @@ -66,7 +66,7 @@ { limit: 1 } ) - function showCreateDialog (ev: Event) { + function showCreateDialog(ev: Event) { showPopup(createItemDialog as AnyComponent, { space: spaceId }, 'top') } @@ -84,7 +84,7 @@ description = space.description } - function getEditor (_class: Ref>): AnyComponent | undefined { + function getEditor(_class: Ref>): AnyComponent | undefined { const clazz = hierarchy.getClass(_class) const editorMixin = hierarchy.as(clazz, view.mixin.ObjectEditor) if (editorMixin?.editor == null && clazz.extends != null) return getEditor(clazz.extends) diff --git a/plugins/workbench-resources/src/components/SpaceView.svelte b/plugins/workbench-resources/src/components/SpaceView.svelte index 44ee729e67..5f29c45dd1 100644 --- a/plugins/workbench-resources/src/components/SpaceView.svelte +++ b/plugins/workbench-resources/src/components/SpaceView.svelte @@ -55,7 +55,7 @@ $: active = $activeViewlet[key] - const update = reduceCalls(async function update ( + const update = reduceCalls(async function update( active: Ref | null, currentSpace?: Ref, attachTo?: Ref> @@ -91,13 +91,13 @@ $: void update(active, currentSpace, currentView?.class) const hierarchy = client.getHierarchy() - async function getHeader (_class: Ref>): Promise { + async function getHeader(_class: Ref>): Promise { const clazz = hierarchy.getClass(_class) const headerMixin = hierarchy.as(clazz, view.mixin.SpaceHeader) if (headerMixin?.header == null && clazz.extends != null) return await getHeader(clazz.extends) return headerMixin.header } - function setViewlet (e: CustomEvent>): void { + function setViewlet(e: CustomEvent>): void { viewlet = e.detail } diff --git a/plugins/workbench-resources/src/components/SpecialView.svelte b/plugins/workbench-resources/src/components/SpecialView.svelte index b3c04abe6b..9c3eaddbe2 100644 --- a/plugins/workbench-resources/src/components/SpecialView.svelte +++ b/plugins/workbench-resources/src/components/SpecialView.svelte @@ -97,7 +97,7 @@ $: viewletActions = viewlet != null ? getViewletSpecialActions(client, viewlet) : [] - async function updateOptions ( + async function updateOptions( _options: FindOptions | undefined, viewOptions: ViewOptions | undefined, viewlet: Viewlet | undefined @@ -105,7 +105,7 @@ options = await getResultOptions(_options, viewlet?.viewOptions?.other, viewOptions) } - async function updateQuery ( + async function updateQuery( initialQuery: DocumentQuery, viewOptions: ViewOptions | undefined, viewlet: Viewlet | undefined, @@ -119,7 +119,7 @@ isQueryLoaded = true } - async function updateInitialQuery ( + async function updateInitialQuery( initialQuery: DocumentQuery, builder: Resource<() => Promise>> | undefined ): Promise> { @@ -129,7 +129,7 @@ return mergeQueries(initialQuery ?? {}, q ?? {}) } - function showCreateDialog (): void { + function showCreateDialog(): void { if (createComponent === undefined) return showPopup(createComponent, { ...createComponentProps, space }, 'top') } diff --git a/plugins/workbench-resources/src/components/Workbench.svelte b/plugins/workbench-resources/src/components/Workbench.svelte index 2375768991..5767413110 100644 --- a/plugins/workbench-resources/src/components/Workbench.svelte +++ b/plugins/workbench-resources/src/components/Workbench.svelte @@ -188,7 +188,7 @@ let hiddenAside: boolean = true $deviceInfo.navigator.visible = !hiddenNavigator - async function toggleNav (): Promise { + async function toggleNav(): Promise { $deviceInfo.navigator.visible = !$deviceInfo.navigator.visible if (!$deviceInfo.navigator.float) { hiddenNavigator = !$deviceInfo.navigator.visible @@ -226,7 +226,7 @@ } ) - async function initCurrentTab (tabs: WorkbenchTab[]): Promise { + async function initCurrentTab(tabs: WorkbenchTab[]): Promise { const tab = tabs.find((t) => t._id === $tabIdStore) const loc = getCurrentLocation() const tabLoc = tab ? getTabLocation(tab) : undefined @@ -366,7 +366,7 @@ let windowWorkspaceName = '' - async function updateWindowTitle (loc: Location): Promise { + async function updateWindowTitle(loc: Location): Promise { let wsUrl = loc.path[1] const ws = $workspacesStore.find((it) => it.url === wsUrl) if (ws !== undefined) { @@ -383,7 +383,7 @@ void broadcastEvent(workbench.event.NotifyTitle, document.title) } - async function getWindowTitle (loc: Location): Promise { + async function getWindowTitle(loc: Location): Promise { if (loc.fragment == null) return const hierarchy = client.getHierarchy() const [, id, _class] = decodeURIComponent(loc.fragment).split('|') @@ -400,7 +400,7 @@ } } - async function resolveShortLink (loc: Location): Promise { + async function resolveShortLink(loc: Location): Promise { let locationResolver = currentApplication?.locationResolver if (loc.path[2] != null && loc.path[2].trim().length > 0) { const app = apps.find((p) => p.alias === loc.path[2]) @@ -414,7 +414,7 @@ } } - function mergeLoc (loc: Location, resolved: ResolvedLocation): Location { + function mergeLoc(loc: Location, resolved: ResolvedLocation): Location { const resolvedApp = resolved.loc.path[2] const resolvedSpace = resolved.loc.path[3] const resolvedSpecial = resolved.loc.path[4] @@ -469,7 +469,7 @@ return loc } - async function syncLoc (loc: Location): Promise { + async function syncLoc(loc: Location): Promise { accessDeniedStore.set(false) const originalLoc = JSON.stringify(loc) if ($tabIdStore !== $prevTabIdStore) { @@ -594,7 +594,7 @@ } } - async function setOpenPanelFocus (fragment: string): Promise { + async function setOpenPanelFocus(fragment: string): Promise { const props = decodeURIComponent(fragment).split('|') if (props.length >= 3) { @@ -637,7 +637,7 @@ }) } - function clear (level: number): void { + function clear(level: number): void { switch (level) { case 1: currentAppAlias = undefined @@ -659,7 +659,7 @@ } } - async function updateSpace (spaceId?: Ref): Promise { + async function updateSpace(spaceId?: Ref): Promise { if (spaceId === currentSpace) return clear(2) currentSpace = spaceId @@ -673,7 +673,7 @@ createItemLabel = currentView?.createItemLabel } - function setSpaceSpecial (spaceSpecial: string | undefined): void { + function setSpaceSpecial(spaceSpecial: string | undefined): void { if (currentSpecial !== undefined && spaceSpecial === currentSpecial) return clear(3) if (spaceSpecial === undefined) return @@ -683,7 +683,7 @@ } } - function getSpecialComponent (id: string): SpecialNavModel | undefined { + function getSpecialComponent(id: string): SpecialNavModel | undefined { const sp = navigatorModel?.specials?.find((x) => x.id === id) if (sp !== undefined) { if (sp.accessLevel !== undefined && !hasAccountRole(account, sp.accessLevel)) { @@ -779,7 +779,7 @@ subscribeMobile(setTheme) }) - function checkInbox (popups: CompAndProps[]) { + function checkInbox(popups: CompAndProps[]) { if (inboxPopup !== undefined) { const exists = popups.find((p) => p.id === inboxPopup?.id) if (!exists) { @@ -789,7 +789,7 @@ } let supportStatus: SupportStatus | undefined = undefined - function handleSupportStatusChanged (status: SupportStatus) { + function handleSupportStatusChanged(status: SupportStatus) { supportStatus = status } @@ -806,7 +806,7 @@ }) let supportWidgetLoading = false - async function handleToggleSupportWidget (): Promise { + async function handleToggleSupportWidget(): Promise { const timer = setTimeout(() => { supportWidgetLoading = true }, 100) @@ -860,7 +860,7 @@ ? !client.getHierarchy().as($myEmployeeStore, contact.mixin.Employee).active : false - function isExcludedApp (alias: string): boolean { + function isExcludedApp(alias: string): boolean { const me = getCurrentAccount() if (me.role === AccountRole.ReadOnlyGuest || me.role === AccountRole.Guest) { diff --git a/plugins/workbench-resources/src/components/WorkbenchTabPresenter.svelte b/plugins/workbench-resources/src/components/WorkbenchTabPresenter.svelte index ba33857ccc..d4842ce16a 100644 --- a/plugins/workbench-resources/src/components/WorkbenchTabPresenter.svelte +++ b/plugins/workbench-resources/src/components/WorkbenchTabPresenter.svelte @@ -43,7 +43,7 @@ let lastLocUrl: string | undefined = undefined let lastLang: string | undefined = undefined - async function updateTabData (tab: WorkbenchTab, lang: string): Promise { + async function updateTabData(tab: WorkbenchTab, lang: string): Promise { const tabLoc = $tabIdStore === tab._id ? getCurrentLocation() : getTabLocation(tab) const url = locationToUrl(tabLoc) @@ -75,7 +75,7 @@ $: void update(tab, $languageStore) - function handleClickTab (): void { + function handleClickTab(): void { selectTab(tab._id) const tabLoc = getTabLocation(tab) const loc = getCurrentLocation() @@ -87,11 +87,11 @@ navigate(tabLoc) } - function handleCloseTab (): void { + function handleCloseTab(): void { void closeTab(tab) } - function handleMenu (event: CustomEvent): void { + function handleMenu(event: CustomEvent): void { event.preventDefault() event.stopPropagation() diff --git a/plugins/workbench-resources/src/components/navigator/SpacePanel.svelte b/plugins/workbench-resources/src/components/navigator/SpacePanel.svelte index 01cb497673..71ddef23bd 100644 --- a/plugins/workbench-resources/src/components/navigator/SpacePanel.svelte +++ b/plugins/workbench-resources/src/components/navigator/SpacePanel.svelte @@ -45,7 +45,7 @@ { limit: 1 } ) - function onNameChange (ev: Event) { + function onNameChange(ev: Event) { const value = (ev.target as HTMLInputElement).value if (value.trim().length > 0) { client.updateDoc(_class, space.space, space._id, { name: value }) diff --git a/plugins/workbench-resources/src/components/navigator/SpacesNav.svelte b/plugins/workbench-resources/src/components/navigator/SpacesNav.svelte index a42600bbaf..bb5c8f2b80 100644 --- a/plugins/workbench-resources/src/components/navigator/SpacesNav.svelte +++ b/plugins/workbench-resources/src/components/navigator/SpacesNav.svelte @@ -84,7 +84,7 @@ const notifyContextByDocStore = inboxClient.contextByDoc const inboxNotificationsByContextStore = inboxClient.inboxNotificationsByContext - function isChanged ( + function isChanged( space: Space, notifyContextByDoc: Map, DocNotifyContext>, inboxNotificationsByContext: Map, InboxNotification[]> @@ -100,7 +100,7 @@ return inboxNotifications.filter(({ isViewed }) => !isViewed).length > 0 } - function getParentActions (): Action[] { + function getParentActions(): Action[] { const result = hasSpaceBrowser ? [browseSpaces] : [] if ( hasAccountRole(getCurrentAccount(), AccountRole.User) && @@ -122,7 +122,7 @@ let filteredSpaces: Space[] = [] - async function updateSpaces (spaces: Space[], visibleIf: (space: Space) => Promise): Promise { + async function updateSpaces(spaces: Space[], visibleIf: (space: Space) => Promise): Promise { const result: Space[] = [] for (const s of spaces) { if (await visibleIf(s)) { @@ -180,7 +180,7 @@ {deselect} isChanged={isChanged(visibleSpace, $notifyContextByDocStore, $inboxNotificationsByContextStore)} spaceActions={[starSpace]} - forciblyСollapsed + forciblyCollapsed /> {/if} diff --git a/plugins/workbench-resources/src/components/navigator/SpacesNavItem.svelte b/plugins/workbench-resources/src/components/navigator/SpacesNavItem.svelte index 0e850a551a..0439411cbc 100644 --- a/plugins/workbench-resources/src/components/navigator/SpacesNavItem.svelte +++ b/plugins/workbench-resources/src/components/navigator/SpacesNavItem.svelte @@ -37,11 +37,11 @@ export let deselect: boolean = false export let isChanged: boolean = false export let spaceActions: Action[] | undefined - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false const client = getClient() - async function getActions (space: Space): Promise { + async function getActions(space: Space): Promise { const result = [...(spaceActions ?? [])] const extraActions = await getContributedActions(client, space, core.class.Space) @@ -71,7 +71,7 @@ {currentFragment} {getActions} {deselect} - {forciblyСollapsed} + {forciblyCollapsed} selected={deselect ? false : currentSpace === space._id} /> {:else} @@ -84,7 +84,7 @@ selected={deselect ? false : currentSpace === space._id} actions={async () => await getActions(space)} bold={isChanged} - {forciblyСollapsed} + {forciblyCollapsed} indent /> {/await} diff --git a/plugins/workbench-resources/src/components/navigator/SpecialElement.svelte b/plugins/workbench-resources/src/components/navigator/SpecialElement.svelte index 803854ca82..2afc3b0f67 100644 --- a/plugins/workbench-resources/src/components/navigator/SpecialElement.svelte +++ b/plugins/workbench-resources/src/components/navigator/SpecialElement.svelte @@ -25,7 +25,7 @@ export let selected: boolean = false export let disabled: boolean = false export let indent: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false {#each actions as action} diff --git a/plugins/workbench-resources/src/components/navigator/StarredNav.svelte b/plugins/workbench-resources/src/components/navigator/StarredNav.svelte index d0e9162528..c64eac1107 100644 --- a/plugins/workbench-resources/src/components/navigator/StarredNav.svelte +++ b/plugins/workbench-resources/src/components/navigator/StarredNav.svelte @@ -32,7 +32,7 @@ const client = getClient() - function getSpaceModel (space: Ref>): SpacesNavModel | undefined { + function getSpaceModel(space: Ref>): SpacesNavModel | undefined { const hierarchy = client.getHierarchy() const ancestors = [space, ...[...hierarchy.getAncestors(space)].reverse()] for (const clazz of ancestors) { @@ -46,7 +46,7 @@ const notifyContextByDocStore = inboxClient.contextByDoc const inboxNotificationsByContextStore = inboxClient.inboxNotificationsByContext - function isChanged ( + function isChanged( space: Space, docUpdates: Map, DocNotifyContext>, inboxNotificationsByContext: Map, InboxNotification[]> @@ -90,7 +90,7 @@ {currentFragment} {deselect} isChanged={isChanged(visibleSpace, $notifyContextByDocStore, $inboxNotificationsByContextStore)} - forciblyСollapsed + forciblyCollapsed /> {/if} diff --git a/plugins/workbench-resources/src/components/navigator/StarredNavItem.svelte b/plugins/workbench-resources/src/components/navigator/StarredNavItem.svelte index db127e0638..22ee100d41 100644 --- a/plugins/workbench-resources/src/components/navigator/StarredNavItem.svelte +++ b/plugins/workbench-resources/src/components/navigator/StarredNavItem.svelte @@ -36,7 +36,7 @@ export let currentFragment: string | undefined export let deselect: boolean = false export let isChanged: boolean = false - export let forciblyСollapsed: boolean = false + export let forciblyCollapsed: boolean = false const client = getClient() @@ -51,7 +51,7 @@ } } - async function getActions (space: Space): Promise { + async function getActions(space: Space): Promise { const result = [unStarSpace] const extraActions = await getContributedActions(client, space, core.class.Space) @@ -80,7 +80,7 @@ {currentFragment} {getActions} {deselect} - {forciblyСollapsed} + {forciblyCollapsed} type={'nested'} /> {:else} @@ -93,7 +93,7 @@ selected={currentSpace === space._id} actions={async () => await getActions(space)} bold={isChanged} - {forciblyСollapsed} + {forciblyCollapsed} />
{/await} diff --git a/plugins/workbench-resources/src/components/sidebar/SidebarExpanded.svelte b/plugins/workbench-resources/src/components/sidebar/SidebarExpanded.svelte index ccdbf31ded..2b3f7e894b 100644 --- a/plugins/workbench-resources/src/components/sidebar/SidebarExpanded.svelte +++ b/plugins/workbench-resources/src/components/sidebar/SidebarExpanded.svelte @@ -56,7 +56,7 @@ } $: float = $sidebarStore.float - function closeWrongTabs (loc: Location): void { + function closeWrongTabs(loc: Location): void { if (widget === undefined) return for (const tab of tabs) { if (tab.allowedPath !== undefined && !tab.isPinned) { @@ -83,12 +83,12 @@ unsubscribe() }) - async function handleTabClose (tabId: string, widget?: Widget): Promise { + async function handleTabClose(tabId: string, widget?: Widget): Promise { if (widget === undefined) return await closeWidgetTab(widget, tabId) } - function handleTabOpen (tabId: string, widget?: Widget): void { + function handleTabOpen(tabId: string, widget?: Widget): void { if (widget === undefined) return openWidgetTab(widget._id, tabId) } @@ -96,7 +96,7 @@ let componentHeight = '0px' let componentWidth = '0px' - function resize (element: Element): void { + function resize(element: Element): void { componentHeight = `${element.clientHeight}px` componentWidth = `${element.clientWidth}px` } diff --git a/plugins/workbench-resources/src/components/sidebar/SidebarTab.svelte b/plugins/workbench-resources/src/components/sidebar/SidebarTab.svelte index 7e756f2ce5..65fe748c6c 100644 --- a/plugins/workbench-resources/src/components/sidebar/SidebarTab.svelte +++ b/plugins/workbench-resources/src/components/sidebar/SidebarTab.svelte @@ -30,7 +30,7 @@ }) } - function handleMenu (event: CustomEvent): void { + function handleMenu(event: CustomEvent): void { if (actions.length === 0) { return } diff --git a/plugins/workbench-resources/src/components/sidebar/SidebarTabs.svelte b/plugins/workbench-resources/src/components/sidebar/SidebarTabs.svelte index 4a5f8faadd..3a98a013af 100644 --- a/plugins/workbench-resources/src/components/sidebar/SidebarTabs.svelte +++ b/plugins/workbench-resources/src/components/sidebar/SidebarTabs.svelte @@ -28,7 +28,7 @@ const dispatch = createEventDispatcher() - function getActions (tab: WidgetTab): Action[] { + function getActions(tab: WidgetTab): Action[] { const pinAction: Action = { label: view.string.Pin, icon: view.icon.Pin, diff --git a/plugins/workbench-resources/src/components/sidebar/widgets/AddWidgetsPopup.svelte b/plugins/workbench-resources/src/components/sidebar/widgets/AddWidgetsPopup.svelte index 10be660ea9..9713acb7c6 100644 --- a/plugins/workbench-resources/src/components/sidebar/widgets/AddWidgetsPopup.svelte +++ b/plugins/workbench-resources/src/components/sidebar/widgets/AddWidgetsPopup.svelte @@ -35,11 +35,11 @@ preferences = res }) - function handleClose (): void { + function handleClose(): void { dispatch('close') } - function isEnabled ( + function isEnabled( widget: Widget, widgetsUpdates: Map, boolean>, preference?: WidgetPreference @@ -47,13 +47,13 @@ return widgetsUpdates.get(widget._id) ?? preference?.enabled ?? false } - function handleCheck (widget: Widget, preference?: WidgetPreference): void { + function handleCheck(widget: Widget, preference?: WidgetPreference): void { const newValue = !isEnabled(widget, widgetsUpdates, preference) widgetsUpdates.set(widget._id, newValue) } - async function handleApply (): Promise { + async function handleApply(): Promise { for (const [widget, enabled] of widgetsUpdates) { const preference = preferences.find((it) => it.attachedTo === widget) if (preference !== undefined) { diff --git a/plugins/workbench-resources/src/components/sidebar/widgets/WidgetsBar.svelte b/plugins/workbench-resources/src/components/sidebar/widgets/WidgetsBar.svelte index e4f7a83768..d45ea9a8f0 100644 --- a/plugins/workbench-resources/src/components/sidebar/widgets/WidgetsBar.svelte +++ b/plugins/workbench-resources/src/components/sidebar/widgets/WidgetsBar.svelte @@ -25,11 +25,11 @@ export let preferences: WidgetPreference[] = [] export let selected: Ref | undefined = undefined - function handleAddWidget (): void { + function handleAddWidget(): void { showPopup(AddWidgetsPopup, { widgets }) } - function handleSelectWidget (widget: Widget): void { + function handleSelectWidget(widget: Widget): void { if (selected === widget._id) { minimizeSidebar(true) } else { diff --git a/plugins/workbench-resources/src/components/statistics/MetricsInfo.svelte b/plugins/workbench-resources/src/components/statistics/MetricsInfo.svelte index f4eb29c222..3cbb4b28ea 100644 --- a/plugins/workbench-resources/src/components/statistics/MetricsInfo.svelte +++ b/plugins/workbench-resources/src/components/statistics/MetricsInfo.svelte @@ -17,7 +17,7 @@ const toTime = (value: number, digits = 10): number => Math.round(value * digits) / digits - function showAvg (name: string, time: number, ops: number): string { + function showAvg(name: string, time: number, ops: number): string { if (name.startsWith('#')) { return `➿ ${toTime(time)}` } @@ -36,7 +36,7 @@ } } - function getSortedMeasurements ( + function getSortedMeasurements( m: Record, sortingOrder: 'avg' | 'ops' | 'total' ): [string, Metrics][] { diff --git a/plugins/workbench-resources/src/components/statistics/Params.svelte b/plugins/workbench-resources/src/components/statistics/Params.svelte index 01f247c3f3..bbf9595870 100644 --- a/plugins/workbench-resources/src/components/statistics/Params.svelte +++ b/plugins/workbench-resources/src/components/statistics/Params.svelte @@ -25,7 +25,7 @@ const manager = createFocusManager() - function toEntries (entries: OperationLogEntry[]): OperationLogEntry[] { + function toEntries(entries: OperationLogEntry[]): OperationLogEntry[] { entries.sort((a, b) => a.start - b.start) // make relative times diff --git a/plugins/workbench-resources/src/mobile.ts b/plugins/workbench-resources/src/mobile.ts index 091430b0e1..9225c4fa41 100644 --- a/plugins/workbench-resources/src/mobile.ts +++ b/plugins/workbench-resources/src/mobile.ts @@ -43,8 +43,8 @@ interface Bridge { type MobileNSWindow = Window & typeof globalThis & { - nsWebViewBridge: Bridge -} + nsWebViewBridge: Bridge + } type SetTheme = (theme: string) => void diff --git a/plugins/workbench/.eslintrc.js b/plugins/workbench/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/plugins/workbench/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/plugins/workbench/eslint.config.mjs b/plugins/workbench/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/plugins/workbench/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/plugins/workbench/package.json b/plugins/workbench/package.json index 517a65eb40..bbd6e00938 100644 --- a/plugins/workbench/package.json +++ b/plugins/workbench/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/plugins/workbench/src/types.ts b/plugins/workbench/src/types.ts index f15bf52081..5f02b02eda 100644 --- a/plugins/workbench/src/types.ts +++ b/plugins/workbench/src/types.ts @@ -177,7 +177,7 @@ export interface SpecialNavModel { spaceClass?: Ref> checkIsDisabled?: Resource<() => Promise> notificationsCountProvider?: Resource< - (inboxNotificationsByContext: Map, InboxNotification[]>) => number + (inboxNotificationsByContext: Map, InboxNotification[]>) => number > navigationModel?: ParentsNavigationModel queryBuilder?: Resource<() => Promise>> diff --git a/pods/account/.eslintrc.js b/pods/account/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/pods/account/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/account/Dockerfile b/pods/account/Dockerfile index cda29ffb2e..7f89613b8d 100644 --- a/pods/account/Dockerfile +++ b/pods/account/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/account/eslint.config.mjs b/pods/account/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/pods/account/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/pods/account/package.json b/pods/account/package.json index c0985b7a17..aa8061ef80 100644 --- a/pods/account/package.json +++ b/pods/account/package.json @@ -35,24 +35,24 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", "@types/koa-bodyparser": "^4.3.12", "@types/koa-router": "^7.4.8", "@types/koa": "^2.15.0", "@types/koa__cors": "^5.0.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/account": "workspace:^0.7.0", diff --git a/pods/api/Dockerfile b/pods/api/Dockerfile new file mode 100644 index 0000000000..aa332b8b23 --- /dev/null +++ b/pods/api/Dockerfile @@ -0,0 +1,9 @@ +FROM tracexapp/base-slim:v20261006 + +WORKDIR /app + +COPY bundle/bundle.js ./ +COPY bundle/bundle.js.map ./ + +EXPOSE 8080 +CMD ["dumb-init", "node", "bundle.js"] diff --git a/pods/authProviders/.eslintrc.js b/pods/authProviders/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/pods/authProviders/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/authProviders/eslint.config.mjs b/pods/authProviders/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/pods/authProviders/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/pods/authProviders/package.json b/pods/authProviders/package.json index bad3c2f2ee..b3a1eede1e 100644 --- a/pods/authProviders/package.json +++ b/pods/authProviders/package.json @@ -23,26 +23,26 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/ws": "^8.18.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/koa-passport": "^6.0.3", "@types/passport-google-oauth20": "^2.0.0", "@types/koa-router": "^7.4.8", "@types/koa": "^2.15.0", "@types/koa-session": "^6.4.5", "@types/passport-github2": "^1.2.9", - "@types/querystringify": "^2.0.2" + "@types/querystringify": "^2.0.2", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "mongodb": "^6.16.0", diff --git a/pods/authProviders/src/utils.ts b/pods/authProviders/src/utils.ts index 32f86c812c..896da631c1 100644 --- a/pods/authProviders/src/utils.ts +++ b/pods/authProviders/src/utils.ts @@ -87,7 +87,7 @@ export async function handleProviderAuth ( email, first, last, - state.inviteId as any, + state.inviteId, socialKey, signUpDisabled ) diff --git a/pods/backup/.eslintrc.js b/pods/backup/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/pods/backup/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/backup/Dockerfile b/pods/backup/Dockerfile index b72a02ed08..d5bb5d8922 100644 --- a/pods/backup/Dockerfile +++ b/pods/backup/Dockerfile @@ -1,5 +1,5 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/backup/eslint.config.mjs b/pods/backup/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/pods/backup/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/pods/backup/package.json b/pods/backup/package.json index 7ade2976ca..399840b885 100644 --- a/pods/backup/package.json +++ b/pods/backup/package.json @@ -33,21 +33,21 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@hcengineering/model-all": "workspace:^0.7.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@hcengineering/model-all": "workspace:^0.7.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/pods/collaborator/.eslintrc.js b/pods/collaborator/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/pods/collaborator/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/collaborator/Dockerfile b/pods/collaborator/Dockerfile index bb0a7d09ab..cc6c81cede 100644 --- a/pods/collaborator/Dockerfile +++ b/pods/collaborator/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/collaborator/eslint.config.mjs b/pods/collaborator/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/pods/collaborator/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/pods/collaborator/package.json b/pods/collaborator/package.json index 2d43d28ddc..6c7d06e792 100644 --- a/pods/collaborator/package.json +++ b/pods/collaborator/package.json @@ -31,20 +31,20 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/pods/external/package.json b/pods/external/package.json index 43b7eba28e..dbb0bf3efa 100644 --- a/pods/external/package.json +++ b/pods/external/package.json @@ -13,12 +13,12 @@ "format": "true" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0" + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" } } diff --git a/pods/front/.eslintrc.js b/pods/front/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/pods/front/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/front/Dockerfile b/pods/front/Dockerfile index 9e5e569a34..c3045f18d9 100644 --- a/pods/front/Dockerfile +++ b/pods/front/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/front-base:v20260811 +FROM platformcollective/front-base:v20261006 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/pods/front/eslint.config.mjs b/pods/front/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/pods/front/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/pods/front/package.json b/pods/front/package.json index e48ca09709..7beced263f 100644 --- a/pods/front/package.json +++ b/pods/front/package.json @@ -36,17 +36,14 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "@types/express": "^4.17.13", "@types/express-fileupload": "^1.1.7", - "@types/uuid": "^8.3.1", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "esbuild": "^0.25.10", "prettier": "^3.6.2", "typescript": "^5.9.3", @@ -54,9 +51,11 @@ "cross-env": "~7.0.3", "ts-node": "^10.9.2", "@types/compression": "~1.7.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/prod": "workspace:^1.0.1", @@ -65,13 +64,13 @@ "@hcengineering/platform": "workspace:^0.7.20", "express": "^4.21.2", "express-fileupload": "^1.5.1", - "uuid": "^8.3.2", - "cors": "^2.8.5", + "uuid": "^11.1.1", + "cors": "^2.8.6", "@hcengineering/server-core": "workspace:^0.7.19", "@hcengineering/server-token": "workspace:^0.7.18", "@hcengineering/attachment": "workspace:^0.7.0", "body-parser": "^1.20.3", - "sharp": "~0.34.3", + "sharp": "~0.35.3", "@hcengineering/analytics": "workspace:^0.7.19", "@hcengineering/analytics-service": "workspace:^0.7.19" } diff --git a/pods/fulltext/.eslintrc.js b/pods/fulltext/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/pods/fulltext/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/fulltext/Dockerfile b/pods/fulltext/Dockerfile index 9a0d838d20..e2119b4b87 100644 --- a/pods/fulltext/Dockerfile +++ b/pods/fulltext/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/fulltext/eslint.config.mjs b/pods/fulltext/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/pods/fulltext/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/pods/fulltext/package.json b/pods/fulltext/package.json index 2b63bb04fa..f14c4422e6 100644 --- a/pods/fulltext/package.json +++ b/pods/fulltext/package.json @@ -32,25 +32,25 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@hcengineering/model-all": "workspace:^0.7.0", "@types/koa-bodyparser": "^4.3.12", "@types/koa-router": "^7.4.8", "@types/koa": "^2.15.0", - "@types/koa__cors": "^5.0.0" + "@types/koa__cors": "^5.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/pods/link-preview/.eslintrc.js b/pods/link-preview/.eslintrc.js deleted file mode 100644 index 297e1a11f7..0000000000 --- a/pods/link-preview/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} \ No newline at end of file diff --git a/pods/link-preview/Dockerfile b/pods/link-preview/Dockerfile index 69e2bc1088..f6308ee1ea 100644 --- a/pods/link-preview/Dockerfile +++ b/pods/link-preview/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /app diff --git a/pods/link-preview/eslint.config.mjs b/pods/link-preview/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/pods/link-preview/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/pods/link-preview/package.json b/pods/link-preview/package.json index 244b2682b8..78fc4aa631 100644 --- a/pods/link-preview/package.json +++ b/pods/link-preview/package.json @@ -31,26 +31,25 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "cross-env": "~7.0.3", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "typescript": "^5.9.3", "@types/express": "^4.17.13", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/morgan": "~1.9.9" }, "dependencies": { @@ -63,10 +62,10 @@ "@hcengineering/server-token": "workspace:^0.7.18", "dotenv": "^16.4.5", "express": "^4.21.2", - "cors": "^2.8.5", - "morgan": "^1.10.0", - "cheerio": "^1.1.2", - "image-size": "^1.2.1", - "oembed-providers": "~1.0.20260106" + "cors": "^2.8.6", + "morgan": "^1.11.0", + "cheerio": "^1.2.0", + "image-size": "^2.0.4", + "oembed-providers": "~1.0.20260604" } } diff --git a/pods/link-preview/src/server.ts b/pods/link-preview/src/server.ts index 4a8512988d..c76e22d280 100644 --- a/pods/link-preview/src/server.ts +++ b/pods/link-preview/src/server.ts @@ -73,10 +73,10 @@ export async function createServer (ctx: MeasureContext, config: Config): Promis const wrapRequest = (ctx: MeasureContext, name: string, fn: AsyncRequestHandler) => - (req: RequestWithAuth, res: Response, next: NextFunction) => { + (req: RequestWithAuth, res: Response, next: NextFunction) => { // eslint-disable-next-line @typescript-eslint/no-floating-promises - handleRequest(ctx, name, fn, req, res, next) - } + handleRequest(ctx, name, fn, req, res, next) + } app.use(morgan('short', { stream: new LogStream() })) diff --git a/pods/media/.eslintrc.js b/pods/media/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/pods/media/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/media/Dockerfile b/pods/media/Dockerfile index 8743136c15..808f633a1a 100644 --- a/pods/media/Dockerfile +++ b/pods/media/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/media/eslint.config.mjs b/pods/media/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/pods/media/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/pods/media/package.json b/pods/media/package.json index 8a8d9574c3..bb51cf07fe 100644 --- a/pods/media/package.json +++ b/pods/media/package.json @@ -32,23 +32,22 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "cross-env": "~7.0.3", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/account-client": "workspace:^0.7.25", diff --git a/pods/media/src/client.ts b/pods/media/src/client.ts index ccd9df02f8..de26e7e790 100644 --- a/pods/media/src/client.ts +++ b/pods/media/src/client.ts @@ -166,7 +166,7 @@ class RestClientAdapter implements Client { private readonly model: ModelDb | undefined ) {} - async domainRequest( + async domainRequest ( domain: OperationDomain, params: DomainParams, options?: DomainRequestOptions @@ -174,7 +174,7 @@ class RestClientAdapter implements Client { return await this.client.domainRequest(domain, params, options) } - async findAll( + async findAll ( _class: Ref>, query: DocumentQuery, options?: FindOptions @@ -182,7 +182,7 @@ class RestClientAdapter implements Client { return await this.client.findAll(_class, query, options) } - async findAllPage( + async findAllPage ( _class: Ref>, query: DocumentQuery, options: FindPageOptions @@ -190,7 +190,7 @@ class RestClientAdapter implements Client { return await this.client.findAllPage(_class, query, options) } - iterateAll( + iterateAll ( _class: Ref>, query: DocumentQuery, options?: IterateOptions @@ -202,7 +202,7 @@ class RestClientAdapter implements Client { return await this.client.tx(tx) } - async findOne( + async findOne ( _class: Ref>, query: DocumentQuery, options?: FindOptions diff --git a/pods/preview/.eslintrc.js b/pods/preview/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/pods/preview/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/preview/Dockerfile b/pods/preview/Dockerfile index 1c3d1bbb64..0e28b22a2c 100644 --- a/pods/preview/Dockerfile +++ b/pods/preview/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/preview-base:v20260811 +FROM platformcollective/preview-base:v20261006 WORKDIR /app diff --git a/pods/preview/eslint.config.mjs b/pods/preview/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/pods/preview/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/pods/preview/package.json b/pods/preview/package.json index 8d6862dc55..bb7078a648 100644 --- a/pods/preview/package.json +++ b/pods/preview/package.json @@ -32,27 +32,26 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "cross-env": "~7.0.3", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "typescript": "^5.9.3", "@types/express": "^4.17.13", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/morgan": "~1.9.9", - "@types/heic-decode": "^1.1.2" + "@types/heic-decode": "^1.1.2", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", @@ -63,12 +62,12 @@ "@hcengineering/server-client": "workspace:^0.7.16", "@hcengineering/server-storage": "workspace:^0.7.16", "@hcengineering/server-token": "workspace:^0.7.18", - "sharp": "~0.34.3", + "sharp": "~0.35.3", "blurhash": "^2.0.5", "dotenv": "^16.4.5", "express": "^4.21.2", - "cors": "^2.8.5", - "morgan": "^1.10.0", + "cors": "^2.8.6", + "morgan": "^1.11.0", "node-poppler": "^8.0.4", "lru-cache": "^11.1.0", "heic-decode": "^2.1.0", diff --git a/pods/preview/src/cache.ts b/pods/preview/src/cache.ts index b9ef472214..bd20c480f0 100644 --- a/pods/preview/src/cache.ts +++ b/pods/preview/src/cache.ts @@ -159,7 +159,7 @@ class DiskCache implements Cache { return entry } - async delete (key: string): Promise { + delete (key: string): void { this.cache.delete(key) } diff --git a/pods/preview/src/server.ts b/pods/preview/src/server.ts index 32fa7d67f0..8278ae6786 100644 --- a/pods/preview/src/server.ts +++ b/pods/preview/src/server.ts @@ -165,10 +165,10 @@ export async function createServer (ctx: MeasureContext, config: Config): Promis const wrapRequest = (ctx: MeasureContext, name: string, fn: AsyncRequestHandler) => - (req: RequestWithAuth, res: Response, next: NextFunction) => { + (req: RequestWithAuth, res: Response, next: NextFunction) => { // eslint-disable-next-line @typescript-eslint/no-floating-promises - handleRequest(ctx, name, fn, req, res, next) - } + handleRequest(ctx, name, fn, req, res, next) + } app.use(morgan('short', { stream: new LogStream() })) diff --git a/pods/preview/src/utils/sharp.ts b/pods/preview/src/utils/sharp.ts index e33da81af0..2ce80c21de 100644 --- a/pods/preview/src/utils/sharp.ts +++ b/pods/preview/src/utils/sharp.ts @@ -13,33 +13,33 @@ // limitations under the License. // -import sharp from 'sharp' +import sharp, { AvifOptions, JpegOptions, HeifOptions, PngOptions, WebpOptions, Sharp } from 'sharp' const QualityConfig = { jpeg: { quality: 85, // default + 5 progressive: true, chromaSubsampling: '4:4:4' - } satisfies sharp.JpegOptions, + } satisfies JpegOptions, avif: { quality: 60, // default + 10 effort: 5, // default + 1 chromaSubsampling: '4:4:4' // default - } satisfies sharp.AvifOptions, + } satisfies AvifOptions, webp: { quality: 80, // default alphaQuality: 100, // default smartSubsample: true, // Better sharpness effort: 5 // default + 1 - } satisfies sharp.WebpOptions, + } satisfies WebpOptions, heif: { quality: 80, // default + 30 effort: 5 // default + 1 - } satisfies sharp.HeifOptions, + } satisfies HeifOptions, png: { quality: 100, // default effort: 7 // default - } satisfies sharp.PngOptions + } satisfies PngOptions } export interface ImageTransformParams { @@ -56,7 +56,7 @@ export async function transformImage ( ): Promise<{ contentType: string, size: number }> { const { format, width, height, fit } = params - let pipeline: sharp.Sharp | undefined + let pipeline: Sharp | undefined try { pipeline = sharp(srcFile, { sequentialRead: true }) diff --git a/pods/server/.eslintrc.js b/pods/server/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/pods/server/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/server/Dockerfile b/pods/server/Dockerfile index 8b3e88399b..9e6cf1790a 100644 --- a/pods/server/Dockerfile +++ b/pods/server/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base:v20260811 +FROM platformcollective/base:v20261006 WORKDIR /usr/src/app COPY bundle/model.json ./ diff --git a/pods/server/eslint.config.mjs b/pods/server/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/pods/server/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/pods/server/package.json b/pods/server/package.json index e6eb6c0515..b51e1434d9 100644 --- a/pods/server/package.json +++ b/pods/server/package.json @@ -37,30 +37,30 @@ "start-flame": "rush bundle --to @hcengineering/pod-server && cross-env NODE_ENV=production MODEL_VERSION=$(node ../../common/scripts/show_version.js) ACCOUNTS_URL=http://localhost:3000 REKONI_URL=http://localhost:4004 MONGO_URL=mongodb://localhost:27017 FRONT_URL=http://localhost:8087 UPLOAD_URL=/upload MINIO_ENDPOINT=localhost MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin METRICS_CONSOLE=true SERVER_SECRET=secret MODEL_JSON=../../models/all/bundle/model.json clinic flame --dest ./out -- node --nolazy -r ts-node/register --enable-source-maps src/__start.ts" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", "@types/ws": "^8.18.1", "ts-node": "^10.9.2", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@hcengineering/model-all": "workspace:^0.7.0", "snappyjs": "^0.7.0", "@types/body-parser": "~1.19.2", "@types/morgan": "~1.9.9", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13" }, "dependencies": { @@ -97,9 +97,9 @@ "snappy": "^7.2.2", "ws": "^8.21.0", "@hcengineering/account-client": "workspace:^0.7.25", - "morgan": "^1.10.0", + "morgan": "^1.11.0", "body-parser": "^1.20.3", - "cors": "^2.8.5", + "cors": "^2.8.6", "express": "^4.21.2" } } diff --git a/pods/server/src/__tests__/server.test.ts b/pods/server/src/__tests__/server.test.ts index a508002f91..049f66f7b3 100644 --- a/pods/server/src/__tests__/server.test.ts +++ b/pods/server/src/__tests__/server.test.ts @@ -70,7 +70,7 @@ describe('server', () => { modelDb, context: {} as any, handleBroadcast: async (ctx) => {}, - findAll: async ( + findAll: async ( ctx: MeasureContext, _class: Ref>, query: DocumentQuery, @@ -177,7 +177,7 @@ describe('server', () => { modelDb, context: {} as any, handleBroadcast: async (ctx) => {}, - findAll: async ( + findAll: async ( ctx: MeasureContext, _class: Ref>, query: DocumentQuery, diff --git a/pods/server/src/server_http.ts b/pods/server/src/server_http.ts index 8c0b66bd47..33c5ded0fb 100644 --- a/pods/server/src/server_http.ts +++ b/pods/server/src/server_http.ts @@ -445,7 +445,7 @@ export function startHttpServer ( if (Array.isArray(data)) { sessions.broadcastAll(ctx, ws, data as Tx[]) } else { - sessions.broadcastAll(ctx, ws, [data as unknown as Tx]) + sessions.broadcastAll(ctx, ws, [data]) } res.end() }) @@ -535,7 +535,7 @@ export function startHttpServer ( if (msg instanceof Buffer) { buff = msg } else if (Array.isArray(msg)) { - buff = Buffer.concat(msg as any) + buff = Buffer.concat(msg) } if (buff !== undefined) { doSessionOp( diff --git a/pods/stats/.eslintrc.js b/pods/stats/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/pods/stats/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/stats/Dockerfile b/pods/stats/Dockerfile index 674f03040f..b6372bb4a4 100644 --- a/pods/stats/Dockerfile +++ b/pods/stats/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/stats/eslint.config.mjs b/pods/stats/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/pods/stats/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/pods/stats/package.json b/pods/stats/package.json index 9ba53d671f..d6dcbfba03 100644 --- a/pods/stats/package.json +++ b/pods/stats/package.json @@ -31,24 +31,24 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", "@types/koa-bodyparser": "^4.3.12", "@types/koa-router": "^7.4.8", "@types/koa": "^2.15.0", "@types/koa__cors": "^5.0.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/pods/workspace/.eslintrc.js b/pods/workspace/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/pods/workspace/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/pods/workspace/Dockerfile b/pods/workspace/Dockerfile index 3deb6b75f9..ec4a44eeb2 100644 --- a/pods/workspace/Dockerfile +++ b/pods/workspace/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/workspace/eslint.config.mjs b/pods/workspace/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/pods/workspace/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/pods/workspace/package.json b/pods/workspace/package.json index fa39b7a496..ce31ff1057 100644 --- a/pods/workspace/package.json +++ b/pods/workspace/package.json @@ -35,20 +35,20 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/workspace-service": "workspace:^0.7.0", diff --git a/qms-desktop-package/package.json b/qms-desktop-package/package.json index fc456cc200..816d452b61 100644 --- a/qms-desktop-package/package.json +++ b/qms-desktop-package/package.json @@ -28,20 +28,20 @@ "node-loader": "~2.0.0", "cross-env": "~7.0.3", "typescript": "^5.9.3", - "electron": "^38.2.2", + "electron": "^43.4.1", "@types/node": "^24.13.3", - "electron-builder": "^25.1.8", + "electron-builder": "^26.15.3", "@electron/notarize": "^2.3.2", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0" + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { - "electron-squirrel-startup": "~1.0.0", + "electron-squirrel-startup": "~1.0.1", "dotenv": "^16.4.5" }, "homepage": "https://tracex.co/", diff --git a/qms-tests/sanity/.eslintrc.js b/qms-tests/sanity/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/qms-tests/sanity/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/qms-tests/sanity/eslint.config.mjs b/qms-tests/sanity/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/qms-tests/sanity/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/qms-tests/sanity/package.json b/qms-tests/sanity/package.json index a37192b72e..d8f78c864f 100644 --- a/qms-tests/sanity/package.json +++ b/qms-tests/sanity/package.json @@ -31,21 +31,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "@playwright/test": "^1.48.2", - "allure-playwright": "^3.0.6", - "allure-js-commons": "^3.0.6", - "@faker-js/faker": "^8.4.1" + "@playwright/test": "^1.63.0", + "allure-playwright": "^3.12.1", + "allure-js-commons": "^3.12.1", + "@faker-js/faker": "^10.6.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "dotenv": "^16.4.5", diff --git a/qms-tests/sanity/tests/model/documents/categories-page.ts b/qms-tests/sanity/tests/model/documents/categories-page.ts index dc589a653d..64aaddd5dd 100644 --- a/qms-tests/sanity/tests/model/documents/categories-page.ts +++ b/qms-tests/sanity/tests/model/documents/categories-page.ts @@ -1,3 +1,4 @@ +/* eslint-disable secure-coding/no-xpath-injection */ import { type Locator, type Page, expect } from '@playwright/test' import { CalendarPage } from '../calendar-page' diff --git a/qms-tests/sanity/tests/utils.ts b/qms-tests/sanity/tests/utils.ts index a95c17981b..0554d26cd1 100644 --- a/qms-tests/sanity/tests/utils.ts +++ b/qms-tests/sanity/tests/utils.ts @@ -83,7 +83,7 @@ export async function getQaraManagerPage (browser: Browser): Promise { return await qaraManagerContext.newPage() } -export async function * iterateLocator (locator: Locator): AsyncGenerator { +export async function* iterateLocator (locator: Locator): AsyncGenerator { for (let index = 0; index < (await locator.count()); index++) { yield locator.nth(index) } diff --git a/rush.json b/rush.json index d13fd63d76..e5cd93a1f9 100644 --- a/rush.json +++ b/rush.json @@ -336,11 +336,6 @@ "reviewCategory": "tools", "shouldPublish": true }, - { - "packageName": "@hcengineering/ui-test", - "projectFolder": "foundations/utils/packages/ui-test", - "shouldPublish": false - }, /// CORE Modules diff --git a/server-plugins/activity-resources/.eslintrc.js b/server-plugins/activity-resources/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/server-plugins/activity-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/activity-resources/eslint.config.mjs b/server-plugins/activity-resources/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/server-plugins/activity-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/server-plugins/activity-resources/package.json b/server-plugins/activity-resources/package.json index e15f83cbea..38f777bce6 100644 --- a/server-plugins/activity-resources/package.json +++ b/server-plugins/activity-resources/package.json @@ -19,19 +19,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/node": "^24.13.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@types/node": "^24.13.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/server-plugins/activity-resources/src/index.ts b/server-plugins/activity-resources/src/index.ts index f73c7372e4..34adc03eed 100644 --- a/server-plugins/activity-resources/src/index.ts +++ b/server-plugins/activity-resources/src/index.ts @@ -342,7 +342,7 @@ export async function generateDocUpdateMessages ( await control.findAll(ctx, core.class.TxCreateDoc, { objectId: tx.attachedTo }, { limit: 1 }) )[0] - doc = createTx !== undefined ? TxProcessor.createDoc2Doc(createTx as TxCreateDoc) : undefined + doc = createTx !== undefined ? TxProcessor.createDoc2Doc(createTx) : undefined } if (doc !== undefined) { objectCache?.docs?.set(tx.attachedTo, doc) @@ -417,8 +417,8 @@ async function ActivityMessagesHandler (_txes: TxCUD[], control: TriggerCon tx.space === core.space.DerivedTx ? [] : await control.ctx.with('generateDocUpdateMessages', {}, (ctx) => - generateDocUpdateMessages(ctx, tx, control, [], cache) - ) + generateDocUpdateMessages(ctx, tx, control, [], cache) + ) const messages = txes.map((messageTx) => TxProcessor.createDoc2Doc(messageTx as TxCreateDoc)) diff --git a/server-plugins/activity-resources/src/references.ts b/server-plugins/activity-resources/src/references.ts index 8d4251487a..df6bcd6f05 100644 --- a/server-plugins/activity-resources/src/references.ts +++ b/server-plugins/activity-resources/src/references.ts @@ -33,7 +33,6 @@ import core, { type TxCUD, TxFactory, TxProcessor, - type TxRemoveDoc, type TxUpdateDoc, type Type, getClassCollaborators @@ -288,7 +287,7 @@ async function getCreateReferencesTxes ( if (blobId != null && blobId !== '') { try { const buffer = await storage.read(ctx, control.workspace, blobId) - const markup = Buffer.concat(buffer as any).toString() + const markup = Buffer.concat(buffer).toString() const attrReferences = getReferencesData(srcDocId, srcDocClass, attachedDocId, attachedDocClass, markup) refs.push(...attrReferences) } catch { @@ -335,7 +334,7 @@ async function getUpdateReferencesTxes ( const blobId = (updatedDoc as any)[attr.name] as Ref if (blobId != null) { const buffer = await storage.read(ctx, control.workspace, blobId) - const markup = Buffer.concat(buffer as any).toString() + const markup = Buffer.concat(buffer).toString() const attrReferences = getReferencesData(srcDocId, srcDocClass, attachedDocId, attachedDocClass, markup) references.push(...attrReferences) } @@ -565,9 +564,9 @@ function guessReferenceObj ( hierarchy: Hierarchy, tx: TxCUD ): { - objectId: Ref - objectClass: Ref> - } { + objectId: Ref + objectClass: Ref> +} { // Try to guess reference target Tx for TxCollectionCUD txes based on collaborators availability if (tx.attachedToClass !== undefined && tx.attachedTo !== undefined) { if (hierarchy.isDerived(tx.objectClass, activity.class.ActivityMessage)) { @@ -674,7 +673,7 @@ async function ActivityReferenceUpdate (tx: TxCUD, control: TriggerControl) } async function ActivityReferenceRemove (tx: TxCUD, control: TriggerControl): Promise { - const ctx = tx as TxRemoveDoc + const ctx = tx const attributes = control.hierarchy.getAllAttributes(ctx.objectClass) let hasMarkdown = false diff --git a/server-plugins/activity/.eslintrc.js b/server-plugins/activity/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/activity/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/activity/eslint.config.mjs b/server-plugins/activity/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/activity/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/activity/package.json b/server-plugins/activity/package.json index 47dd9f03ae..e7e7202ccc 100644 --- a/server-plugins/activity/package.json +++ b/server-plugins/activity/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/activity/src/index.ts b/server-plugins/activity/src/index.ts index f28fffb55b..4595ec6d18 100644 --- a/server-plugins/activity/src/index.ts +++ b/server-plugins/activity/src/index.ts @@ -17,7 +17,7 @@ import { Plugin, Resource, plugin } from '@hcengineering/platform' import type { TriggerFunc } from '@hcengineering/server-core' import { Presenter } from '@hcengineering/server-notification' -export * from './types' +export type * from './types' export * from './utils' /** diff --git a/server-plugins/ai-bot-resources/.eslintrc.js b/server-plugins/ai-bot-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/ai-bot-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/ai-bot-resources/eslint.config.mjs b/server-plugins/ai-bot-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/ai-bot-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/ai-bot-resources/package.json b/server-plugins/ai-bot-resources/package.json index 080c6cfe47..4c2a6cc3c1 100644 --- a/server-plugins/ai-bot-resources/package.json +++ b/server-plugins/ai-bot-resources/package.json @@ -22,18 +22,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/server-plugins/ai-bot/.eslintrc.js b/server-plugins/ai-bot/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/ai-bot/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/ai-bot/eslint.config.mjs b/server-plugins/ai-bot/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/ai-bot/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/ai-bot/package.json b/server-plugins/ai-bot/package.json index 46b362150b..e857cabd51 100644 --- a/server-plugins/ai-bot/package.json +++ b/server-plugins/ai-bot/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/ai-bot": "workspace:^0.7.0", diff --git a/server-plugins/ai-bot/src/index.ts b/server-plugins/ai-bot/src/index.ts index 03c1361e28..13c9b98243 100644 --- a/server-plugins/ai-bot/src/index.ts +++ b/server-plugins/ai-bot/src/index.ts @@ -17,7 +17,7 @@ import type { Metadata, Plugin, Resource } from '@hcengineering/platform' import { plugin } from '@hcengineering/platform' import { TriggerFunc } from '@hcengineering/server-core' -export * from './types' +export type * from './types' export const serverAiBotId = 'server-ai-bot' as Plugin export default plugin(serverAiBotId, { diff --git a/server-plugins/analytics-collector-resources/.eslintrc.js b/server-plugins/analytics-collector-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/analytics-collector-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/analytics-collector-resources/eslint.config.mjs b/server-plugins/analytics-collector-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/analytics-collector-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/analytics-collector-resources/package.json b/server-plugins/analytics-collector-resources/package.json index e664f49e30..130802b8ee 100644 --- a/server-plugins/analytics-collector-resources/package.json +++ b/server-plugins/analytics-collector-resources/package.json @@ -22,18 +22,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/chunter": "workspace:^0.7.0", diff --git a/server-plugins/analytics-collector/.eslintrc.js b/server-plugins/analytics-collector/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/analytics-collector/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/analytics-collector/eslint.config.mjs b/server-plugins/analytics-collector/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/analytics-collector/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/analytics-collector/package.json b/server-plugins/analytics-collector/package.json index af4df73827..6958dea045 100644 --- a/server-plugins/analytics-collector/package.json +++ b/server-plugins/analytics-collector/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", - "typescript": "^5.9.3" + "ts-jest": "^29.4.12", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics-collector": "workspace:^0.7.0", diff --git a/server-plugins/attachment-resources/.eslintrc.js b/server-plugins/attachment-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/attachment-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/attachment-resources/eslint.config.mjs b/server-plugins/attachment-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/attachment-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/attachment-resources/package.json b/server-plugins/attachment-resources/package.json index f3af68a375..292de0dcae 100644 --- a/server-plugins/attachment-resources/package.json +++ b/server-plugins/attachment-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/attachment/.eslintrc.js b/server-plugins/attachment/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/attachment/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/attachment/eslint.config.mjs b/server-plugins/attachment/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/attachment/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/attachment/package.json b/server-plugins/attachment/package.json index 3051430a04..68d67b6182 100644 --- a/server-plugins/attachment/package.json +++ b/server-plugins/attachment/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/calendar-resources/.eslintrc.js b/server-plugins/calendar-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/calendar-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/calendar-resources/eslint.config.mjs b/server-plugins/calendar-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/calendar-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/calendar-resources/package.json b/server-plugins/calendar-resources/package.json index c7bdb6b577..e579aef570 100644 --- a/server-plugins/calendar-resources/package.json +++ b/server-plugins/calendar-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/calendar-resources/src/index.ts b/server-plugins/calendar-resources/src/index.ts index 512a420391..1fc94b0901 100644 --- a/server-plugins/calendar-resources/src/index.ts +++ b/server-plugins/calendar-resources/src/index.ts @@ -57,16 +57,16 @@ interface ScheduledNotificationMessage { type TimeMachineMessage = | { - type: 'schedule' - id: string - targetDate: number - topic: string - data: ScheduledNotificationMessage - } + type: 'schedule' + id: string + targetDate: number + topic: string + data: ScheduledNotificationMessage + } | { - type: 'cancel' - id: string - } + type: 'cancel' + id: string + } type TimeMachineScheduleMessage = Extract @@ -294,7 +294,7 @@ async function OnEvent (txes: Tx[], control: TriggerControl): Promise { } else if (ctx._class === core.class.TxUpdateDoc) { result.push(...(await onEventUpdate(ctx as TxUpdateDoc, control))) } else if (ctx._class === core.class.TxRemoveDoc) { - result.push(...(await onRemoveEvent(ctx as TxRemoveDoc, control))) + result.push(...(await onRemoveEvent(ctx, control))) } else if (ctx._class === core.class.TxMixin) { result.push(...(await onEventMixin(ctx as TxMixin, control))) } @@ -499,7 +499,7 @@ async function onEventCreate (ctx: TxCreateDoc, control: TriggerControl): const events = await control.findAll(control.ctx, calendar.class.Event, { eventId: event.eventId }) const access = AccessLevel.Reader for (const part of event.participants) { - const socialIds = await getSocialIds(control, part as Ref) + const socialIds = await getSocialIds(control, part) if (socialIds.length === 0) continue const socialStrings = socialIds.map((si) => si._id) if (socialStrings.includes(event.user ?? event.createdBy ?? event.modifiedBy)) continue diff --git a/server-plugins/calendar/.eslintrc.js b/server-plugins/calendar/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/calendar/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/calendar/eslint.config.mjs b/server-plugins/calendar/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/calendar/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/calendar/package.json b/server-plugins/calendar/package.json index 5c48019e79..38cfcd1944 100644 --- a/server-plugins/calendar/package.json +++ b/server-plugins/calendar/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/card-resources/.eslintrc.js b/server-plugins/card-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/card-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/card-resources/eslint.config.mjs b/server-plugins/card-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/card-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/card-resources/package.json b/server-plugins/card-resources/package.json index 0f7f0cc208..a7775e6039 100644 --- a/server-plugins/card-resources/package.json +++ b/server-plugins/card-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/server-plugins/card/.eslintrc.js b/server-plugins/card/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/card/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/card/eslint.config.mjs b/server-plugins/card/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/card/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/card/package.json b/server-plugins/card/package.json index 6a8a67ceec..a2fe73665b 100644 --- a/server-plugins/card/package.json +++ b/server-plugins/card/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/chunter-resources/.eslintrc.js b/server-plugins/chunter-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/chunter-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/chunter-resources/eslint.config.mjs b/server-plugins/chunter-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/chunter-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/chunter-resources/package.json b/server-plugins/chunter-resources/package.json index 5693659fc1..564d24caa4 100644 --- a/server-plugins/chunter-resources/package.json +++ b/server-plugins/chunter-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/server-plugins/chunter/.eslintrc.js b/server-plugins/chunter/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/chunter/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/chunter/eslint.config.mjs b/server-plugins/chunter/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/chunter/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/chunter/package.json b/server-plugins/chunter/package.json index da2a5fff11..09b9b8a9b7 100644 --- a/server-plugins/chunter/package.json +++ b/server-plugins/chunter/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/server-notification": "workspace:^0.7.0", diff --git a/server-plugins/collaboration-resources/.eslintrc.js b/server-plugins/collaboration-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/collaboration-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/collaboration-resources/eslint.config.mjs b/server-plugins/collaboration-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/collaboration-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/collaboration-resources/package.json b/server-plugins/collaboration-resources/package.json index 2db86fa499..4ed5c1786c 100644 --- a/server-plugins/collaboration-resources/package.json +++ b/server-plugins/collaboration-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/collaboration/.eslintrc.js b/server-plugins/collaboration/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/collaboration/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/collaboration/eslint.config.mjs b/server-plugins/collaboration/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/collaboration/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/collaboration/package.json b/server-plugins/collaboration/package.json index 0279582496..ef8d540424 100644 --- a/server-plugins/collaboration/package.json +++ b/server-plugins/collaboration/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/contact-resources/.eslintrc.js b/server-plugins/contact-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/contact-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/contact-resources/eslint.config.mjs b/server-plugins/contact-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/contact-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/contact-resources/package.json b/server-plugins/contact-resources/package.json index 82ebd80682..58d4ede781 100644 --- a/server-plugins/contact-resources/package.json +++ b/server-plugins/contact-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/contact/.eslintrc.js b/server-plugins/contact/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/contact/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/contact/eslint.config.mjs b/server-plugins/contact/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/contact/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/contact/package.json b/server-plugins/contact/package.json index ebbbfeebb4..1d90d06126 100644 --- a/server-plugins/contact/package.json +++ b/server-plugins/contact/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/server-notification": "workspace:^0.7.0", diff --git a/server-plugins/controlled-documents-resources/.eslintrc.js b/server-plugins/controlled-documents-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/controlled-documents-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/controlled-documents-resources/eslint.config.mjs b/server-plugins/controlled-documents-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/controlled-documents-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/controlled-documents-resources/package.json b/server-plugins/controlled-documents-resources/package.json index 413089f5c6..f638fde8a6 100644 --- a/server-plugins/controlled-documents-resources/package.json +++ b/server-plugins/controlled-documents-resources/package.json @@ -22,20 +22,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/node": "^24.13.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@types/node": "^24.13.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/chunter": "workspace:^0.7.0", diff --git a/server-plugins/controlled-documents/.eslintrc.js b/server-plugins/controlled-documents/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/controlled-documents/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/controlled-documents/eslint.config.mjs b/server-plugins/controlled-documents/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/controlled-documents/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/controlled-documents/package.json b/server-plugins/controlled-documents/package.json index 5ef614ae13..ef41714260 100644 --- a/server-plugins/controlled-documents/package.json +++ b/server-plugins/controlled-documents/package.json @@ -23,19 +23,19 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server-plugins/document-resources/.eslintrc.js b/server-plugins/document-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/document-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/document-resources/eslint.config.mjs b/server-plugins/document-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/document-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/document-resources/package.json b/server-plugins/document-resources/package.json index 0d3b2625cf..237c079696 100644 --- a/server-plugins/document-resources/package.json +++ b/server-plugins/document-resources/package.json @@ -22,20 +22,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/node": "^24.13.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@types/node": "^24.13.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/document/.eslintrc.js b/server-plugins/document/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/document/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/document/eslint.config.mjs b/server-plugins/document/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/document/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/document/package.json b/server-plugins/document/package.json index 127e081a40..1d43dbbdd5 100644 --- a/server-plugins/document/package.json +++ b/server-plugins/document/package.json @@ -23,19 +23,19 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server-plugins/drive-resources/.eslintrc.js b/server-plugins/drive-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/drive-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/drive-resources/eslint.config.mjs b/server-plugins/drive-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/drive-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/drive-resources/package.json b/server-plugins/drive-resources/package.json index bac9b89f95..5453c9a633 100644 --- a/server-plugins/drive-resources/package.json +++ b/server-plugins/drive-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/drive/.eslintrc.js b/server-plugins/drive/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/drive/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/drive/eslint.config.mjs b/server-plugins/drive/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/drive/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/drive/package.json b/server-plugins/drive/package.json index 975da8b203..f84a7e592e 100644 --- a/server-plugins/drive/package.json +++ b/server-plugins/drive/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/gmail-resources/.eslintrc.js b/server-plugins/gmail-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/gmail-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/gmail-resources/eslint.config.mjs b/server-plugins/gmail-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/gmail-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/gmail-resources/package.json b/server-plugins/gmail-resources/package.json index 33c7e57c0c..7b49b7230b 100644 --- a/server-plugins/gmail-resources/package.json +++ b/server-plugins/gmail-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/server-plugins/gmail-resources/src/index.ts b/server-plugins/gmail-resources/src/index.ts index d8fbbf0c4c..0362fd7a16 100644 --- a/server-plugins/gmail-resources/src/index.ts +++ b/server-plugins/gmail-resources/src/index.ts @@ -261,7 +261,7 @@ async function processEmailNotifications (control: TriggerControl, notifications // Fallback to regular findAll if lowLevel fails control.ctx.warn('processEmailNotifications: Raw find all failed', { employeeId: employee._id, err }) const emailsResult = await control.findAll(control.ctx, contact.class.SocialIdentity, emailQuery) - emails = emailsResult as SocialIdentity[] + emails = emailsResult } if (emails.length === 0) { diff --git a/server-plugins/gmail/.eslintrc.js b/server-plugins/gmail/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/gmail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/gmail/eslint.config.mjs b/server-plugins/gmail/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/gmail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/gmail/package.json b/server-plugins/gmail/package.json index bcdedb9ce5..6a1773eedd 100644 --- a/server-plugins/gmail/package.json +++ b/server-plugins/gmail/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/guest-resources/.eslintrc.js b/server-plugins/guest-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/guest-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/guest-resources/eslint.config.mjs b/server-plugins/guest-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/guest-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/guest-resources/package.json b/server-plugins/guest-resources/package.json index 72f228f0ea..e5ae449f5d 100644 --- a/server-plugins/guest-resources/package.json +++ b/server-plugins/guest-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/guest/.eslintrc.js b/server-plugins/guest/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/guest/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/guest/eslint.config.mjs b/server-plugins/guest/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/guest/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/guest/package.json b/server-plugins/guest/package.json index dd404af637..c38f643581 100644 --- a/server-plugins/guest/package.json +++ b/server-plugins/guest/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/hr-resources/.eslintrc.js b/server-plugins/hr-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/hr-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/hr-resources/eslint.config.mjs b/server-plugins/hr-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/hr-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/hr-resources/package.json b/server-plugins/hr-resources/package.json index fb65460b32..cf14e22b61 100644 --- a/server-plugins/hr-resources/package.json +++ b/server-plugins/hr-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/hr-resources/src/index.ts b/server-plugins/hr-resources/src/index.ts index ca96cd8497..daaf9a5e86 100644 --- a/server-plugins/hr-resources/src/index.ts +++ b/server-plugins/hr-resources/src/index.ts @@ -359,7 +359,7 @@ async function sendEmailNotifications ( const notificationControl = await getNotificationProviderControl(control.ctx, control) for (const contact of contacts.values()) { - const socialStrings = await getSocialStrings(control, contact as Ref) + const socialStrings = await getSocialStrings(control, contact) const allowed = isAllowed(control, socialStrings, type, provider, notificationControl) if (!allowed) { contacts.delete(contact) diff --git a/server-plugins/hr/.eslintrc.js b/server-plugins/hr/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/hr/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/hr/eslint.config.mjs b/server-plugins/hr/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/hr/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/hr/package.json b/server-plugins/hr/package.json index a9f7edaa2b..5779ef791c 100644 --- a/server-plugins/hr/package.json +++ b/server-plugins/hr/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/inventory-resources/.eslintrc.js b/server-plugins/inventory-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/inventory-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/inventory-resources/eslint.config.mjs b/server-plugins/inventory-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/inventory-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/inventory-resources/package.json b/server-plugins/inventory-resources/package.json index 0c2eeb2589..e2d75f0e8c 100644 --- a/server-plugins/inventory-resources/package.json +++ b/server-plugins/inventory-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/inventory/.eslintrc.js b/server-plugins/inventory/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/inventory/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/inventory/eslint.config.mjs b/server-plugins/inventory/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/inventory/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/inventory/package.json b/server-plugins/inventory/package.json index a4fe638ca4..034523472a 100644 --- a/server-plugins/inventory/package.json +++ b/server-plugins/inventory/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server-plugins/lead-resources/.eslintrc.js b/server-plugins/lead-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/lead-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/lead-resources/eslint.config.mjs b/server-plugins/lead-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/lead-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/lead-resources/package.json b/server-plugins/lead-resources/package.json index f6ae4f59b1..ac5976ce37 100644 --- a/server-plugins/lead-resources/package.json +++ b/server-plugins/lead-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/lead/.eslintrc.js b/server-plugins/lead/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/lead/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/lead/eslint.config.mjs b/server-plugins/lead/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/lead/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/lead/package.json b/server-plugins/lead/package.json index 415314e560..1b3917b202 100644 --- a/server-plugins/lead/package.json +++ b/server-plugins/lead/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server-plugins/love-resources/.eslintrc.js b/server-plugins/love-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/love-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/love-resources/eslint.config.mjs b/server-plugins/love-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/love-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/love-resources/package.json b/server-plugins/love-resources/package.json index 4fc1c818cb..7b5bb1006b 100644 --- a/server-plugins/love-resources/package.json +++ b/server-plugins/love-resources/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "prettier-plugin-svelte": "^3.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/view": "workspace:^0.7.0", diff --git a/server-plugins/love-resources/src/index.ts b/server-plugins/love-resources/src/index.ts index 8a294dca67..36c226585b 100644 --- a/server-plugins/love-resources/src/index.ts +++ b/server-plugins/love-resources/src/index.ts @@ -65,7 +65,7 @@ export async function OnEmployee (txes: Tx[], control: TriggerControl): Promise< const createTx = tx as TxCreateDoc if (createTx.objectClass === contact.mixin.Employee) { employee = TxProcessor.createDoc2Doc(createTx) - employeeId = createTx.objectId as Ref + employeeId = createTx.objectId } } else if (tx._class === core.class.TxMixin) { // Handle TxMixin (Employee added as mixin to Person) - used by AI bot diff --git a/server-plugins/love/.eslintrc.js b/server-plugins/love/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/love/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/love/eslint.config.mjs b/server-plugins/love/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/love/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/love/package.json b/server-plugins/love/package.json index 3ed7f9198c..bb07752d92 100644 --- a/server-plugins/love/package.json +++ b/server-plugins/love/package.json @@ -23,19 +23,19 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "prettier-plugin-svelte": "^3.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/notification-resources/.eslintrc.js b/server-plugins/notification-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/notification-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/notification-resources/eslint.config.mjs b/server-plugins/notification-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/notification-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/notification-resources/package.json b/server-plugins/notification-resources/package.json index 821f9a6780..0623fb6df6 100644 --- a/server-plugins/notification-resources/package.json +++ b/server-plugins/notification-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/server-plugins/notification-resources/src/__tests__/push.test.ts b/server-plugins/notification-resources/src/__tests__/push.test.ts index 9c42fdb968..febef70e72 100644 --- a/server-plugins/notification-resources/src/__tests__/push.test.ts +++ b/server-plugins/notification-resources/src/__tests__/push.test.ts @@ -44,7 +44,7 @@ describe('OnInboxNotificationCreate', () => { notification.class.CommonInboxNotification, 'space-1' as Ref, { user, isViewed, docNotifyContext: 'ctx', objectId: 'obj', objectClass: core.class.Doc } as any - ) as TxCreateDoc + ) beforeEach(() => { send = jest.fn().mockResolvedValue(undefined) diff --git a/server-plugins/notification-resources/src/index.ts b/server-plugins/notification-resources/src/index.ts index 0ac5aa1491..50a8cde039 100644 --- a/server-plugins/notification-resources/src/index.ts +++ b/server-plugins/notification-resources/src/index.ts @@ -501,7 +501,7 @@ export async function getTranslatedNotificationContent ( } else if (control.hierarchy.isDerived(_class, notification.class.MentionInboxNotification)) { return await mentionInboxNotificationToText(data as Data, control) } else if (control.hierarchy.isDerived(_class, notification.class.CommonInboxNotification)) { - return await commonInboxNotificationToText(data as Data) + return await commonInboxNotificationToText(data) } return { title: '', body: '' } @@ -786,8 +786,8 @@ export async function createCollabDocInfo ( const filteredCollaborators = !space.private ? collaborators : collaborators.filter( - (it) => - space.members.includes(it) || + (it) => + space.members.includes(it) || currentRes.some((tx) => { if (tx._class === core.class.TxUpdateDoc) { const updateTx = tx as TxUpdateDoc @@ -798,7 +798,7 @@ export async function createCollabDocInfo ( } return false }) - ) + ) const targets = new Set(filteredCollaborators) // user is not collaborator of himself, but we should notify user of changes related to users account (mentions, comments etc) @@ -867,10 +867,10 @@ async function getTxCollabs ( cache: Map, Collaborator[]>, doc: Doc ): Promise<{ - added: AccountUuid[] - removed: AccountUuid[] - result: AccountUuid[] - }> { + added: AccountUuid[] + removed: AccountUuid[] + result: AccountUuid[] +}> { const { hierarchy } = control const mixin = getClassCollaborators(control.modelDb, hierarchy, doc._class) if (mixin === undefined) return { added: [], removed: [], result: [] } diff --git a/server-plugins/notification-resources/src/push.ts b/server-plugins/notification-resources/src/push.ts index ecf60a9e90..c72e927692 100644 --- a/server-plugins/notification-resources/src/push.ts +++ b/server-plugins/notification-resources/src/push.ts @@ -159,9 +159,9 @@ function getMessageInfo ( n: InboxNotification, hierarchy: Hierarchy ): { - _id?: Ref - _class?: Ref> - } { + _id?: Ref + _class?: Ref> +} { if (hierarchy.isDerived(n._class, notification.class.ActivityInboxNotification)) { const activityNotification = n as ActivityInboxNotification diff --git a/server-plugins/notification/.eslintrc.js b/server-plugins/notification/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/notification/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/notification/eslint.config.mjs b/server-plugins/notification/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/notification/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/notification/package.json b/server-plugins/notification/package.json index 254529e8c8..971b8449ca 100644 --- a/server-plugins/notification/package.json +++ b/server-plugins/notification/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/notification/src/index.ts b/server-plugins/notification/src/index.ts index b1cf23a14f..9f8254bbe7 100644 --- a/server-plugins/notification/src/index.ts +++ b/server-plugins/notification/src/index.ts @@ -49,15 +49,15 @@ export interface TextPresenter extends Class { * @public */ export type TypeMatchFunc = Resource< -( - tx: Tx, - doc: Doc, - person: Ref, - socialIds: PersonId[], - type: NotificationType, - control: TriggerControl, - account: AccountUuid -) => boolean | Promise + ( + tx: Tx, + doc: Doc, + person: Ref, + socialIds: PersonId[], + type: NotificationType, + control: TriggerControl, + account: AccountUuid + ) => boolean | Promise > /** diff --git a/server-plugins/preference/.eslintrc.js b/server-plugins/preference/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/preference/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/preference/eslint.config.mjs b/server-plugins/preference/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/preference/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/preference/package.json b/server-plugins/preference/package.json index 7fed4e936c..7aeea845b2 100644 --- a/server-plugins/preference/package.json +++ b/server-plugins/preference/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/process-resources/.eslintrc.js b/server-plugins/process-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/process-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/process-resources/eslint.config.mjs b/server-plugins/process-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/process-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/process-resources/package.json b/server-plugins/process-resources/package.json index 6de34aa051..8d24e0fa88 100644 --- a/server-plugins/process-resources/package.json +++ b/server-plugins/process-resources/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "prettier-plugin-svelte": "^3.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/time": "workspace:^0.7.0", diff --git a/server-plugins/process-resources/src/index.ts b/server-plugins/process-resources/src/index.ts index 4791dec4d0..407e226e1a 100644 --- a/server-plugins/process-resources/src/index.ts +++ b/server-plugins/process-resources/src/index.ts @@ -327,7 +327,7 @@ export async function OnExecutionDone (txes: Tx[], control: TriggerControl): Pro const todosWithWorkslots = new Set(workslots.map((workslot) => workslot.attachedTo as string)) for (const todo of todos) { - if (todosWithWorkslots.has(todo._id as string)) continue + if (todosWithWorkslots.has(todo._id)) continue res.push(control.txFactory.createTxRemoveDoc(todo._class, todo.space, todo._id)) } } diff --git a/server-plugins/process/.eslintrc.js b/server-plugins/process/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/process/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/process/eslint.config.mjs b/server-plugins/process/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/process/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/process/package.json b/server-plugins/process/package.json index 31af5adb75..7eb8846c12 100644 --- a/server-plugins/process/package.json +++ b/server-plugins/process/package.json @@ -23,19 +23,19 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "prettier-plugin-svelte": "^3.4.0" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "prettier-plugin-svelte": "^3.4.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/process/src/index.ts b/server-plugins/process/src/index.ts index d5b4f8c25b..57f929a936 100644 --- a/server-plugins/process/src/index.ts +++ b/server-plugins/process/src/index.ts @@ -5,7 +5,7 @@ import { Execution, Method, ProcessFunction, Trigger } from '@hcengineering/proc import { TriggerFunc } from '@hcengineering/server-core' import { ExecuteFunc, ProcessControl, RollbackFunc, TransformFunc } from './types' -export * from './types' +export type * from './types' /** * @public diff --git a/server-plugins/rating/.eslintrc.js b/server-plugins/rating/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/rating/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/rating/eslint.config.mjs b/server-plugins/rating/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/rating/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/rating/package.json b/server-plugins/rating/package.json index d7af93b11f..1fa2a7f367 100644 --- a/server-plugins/rating/package.json +++ b/server-plugins/rating/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/recruit-resources/.eslintrc.js b/server-plugins/recruit-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/recruit-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/recruit-resources/eslint.config.mjs b/server-plugins/recruit-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/recruit-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/recruit-resources/package.json b/server-plugins/recruit-resources/package.json index a349c49a1f..0b9b552749 100644 --- a/server-plugins/recruit-resources/package.json +++ b/server-plugins/recruit-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/recruit/.eslintrc.js b/server-plugins/recruit/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/recruit/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/recruit/eslint.config.mjs b/server-plugins/recruit/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/recruit/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/recruit/package.json b/server-plugins/recruit/package.json index 30976c0394..2a6206ed5c 100644 --- a/server-plugins/recruit/package.json +++ b/server-plugins/recruit/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server-plugins/request-resources/.eslintrc.js b/server-plugins/request-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/request-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/request-resources/eslint.config.mjs b/server-plugins/request-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/request-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/request-resources/package.json b/server-plugins/request-resources/package.json index 8ffa273eea..adfcc0fb4b 100644 --- a/server-plugins/request-resources/package.json +++ b/server-plugins/request-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/request/.eslintrc.js b/server-plugins/request/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/request/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/request/eslint.config.mjs b/server-plugins/request/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/request/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/request/package.json b/server-plugins/request/package.json index d361fa9f72..7db027e4aa 100644 --- a/server-plugins/request/package.json +++ b/server-plugins/request/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server-plugins/setting-resources/.eslintrc.js b/server-plugins/setting-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/setting-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/setting-resources/eslint.config.mjs b/server-plugins/setting-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/setting-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/setting-resources/package.json b/server-plugins/setting-resources/package.json index 07d8298f26..9e0298337a 100644 --- a/server-plugins/setting-resources/package.json +++ b/server-plugins/setting-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/setting/.eslintrc.js b/server-plugins/setting/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/setting/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/setting/eslint.config.mjs b/server-plugins/setting/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/setting/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/setting/package.json b/server-plugins/setting/package.json index c1fcb3d5e6..8e79afcbec 100644 --- a/server-plugins/setting/package.json +++ b/server-plugins/setting/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/tags-resources/.eslintrc.js b/server-plugins/tags-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/tags-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/tags-resources/eslint.config.mjs b/server-plugins/tags-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/tags-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/tags-resources/package.json b/server-plugins/tags-resources/package.json index bd9d9fb645..b55ecc86dc 100644 --- a/server-plugins/tags-resources/package.json +++ b/server-plugins/tags-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/tags/.eslintrc.js b/server-plugins/tags/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/tags/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/tags/eslint.config.mjs b/server-plugins/tags/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/tags/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/tags/package.json b/server-plugins/tags/package.json index 2a5faea5b0..10a7d95db7 100644 --- a/server-plugins/tags/package.json +++ b/server-plugins/tags/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/task-resources/.eslintrc.js b/server-plugins/task-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/task-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/task-resources/eslint.config.mjs b/server-plugins/task-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/task-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/task-resources/package.json b/server-plugins/task-resources/package.json index f5a1cdbe09..ed0cbeb754 100644 --- a/server-plugins/task-resources/package.json +++ b/server-plugins/task-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/task/.eslintrc.js b/server-plugins/task/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/task/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/task/eslint.config.mjs b/server-plugins/task/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/task/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/task/package.json b/server-plugins/task/package.json index 5685794e73..931c29eb0e 100644 --- a/server-plugins/task/package.json +++ b/server-plugins/task/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/server-notification": "workspace:^0.7.0", diff --git a/server-plugins/telegram-resources/.eslintrc.js b/server-plugins/telegram-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/telegram-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/telegram-resources/eslint.config.mjs b/server-plugins/telegram-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/telegram-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/telegram-resources/package.json b/server-plugins/telegram-resources/package.json index 0b1d66306c..b50803894b 100644 --- a/server-plugins/telegram-resources/package.json +++ b/server-plugins/telegram-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/server-plugins/telegram-resources/src/index.ts b/server-plugins/telegram-resources/src/index.ts index 7d362bddca..782e422df1 100644 --- a/server-plugins/telegram-resources/src/index.ts +++ b/server-plugins/telegram-resources/src/index.ts @@ -195,11 +195,11 @@ async function getTranslatedData ( control: TriggerControl, message?: ActivityMessage ): Promise<{ - title: string - quote: string | undefined - body: string - link: string - }> { + title: string + quote: string | undefined + body: string + link: string +}> { const { hierarchy } = control let { title, body } = await getTranslatedNotificationContent(data, data._class, control) diff --git a/server-plugins/telegram/.eslintrc.js b/server-plugins/telegram/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/telegram/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/telegram/eslint.config.mjs b/server-plugins/telegram/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/telegram/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/telegram/package.json b/server-plugins/telegram/package.json index 3d73d8bdea..e1ecc64570 100644 --- a/server-plugins/telegram/package.json +++ b/server-plugins/telegram/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", diff --git a/server-plugins/templates/.eslintrc.js b/server-plugins/templates/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/templates/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/templates/eslint.config.mjs b/server-plugins/templates/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/templates/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/templates/package.json b/server-plugins/templates/package.json index fb43c55928..ca43c0a443 100644 --- a/server-plugins/templates/package.json +++ b/server-plugins/templates/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/time-resources/.eslintrc.js b/server-plugins/time-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/time-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/time-resources/eslint.config.mjs b/server-plugins/time-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/time-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/time-resources/package.json b/server-plugins/time-resources/package.json index 505b3a0675..792adbc886 100644 --- a/server-plugins/time-resources/package.json +++ b/server-plugins/time-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/server-plugins/time/.eslintrc.js b/server-plugins/time/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/time/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/time/eslint.config.mjs b/server-plugins/time/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/time/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/time/package.json b/server-plugins/time/package.json index 5f5621eee7..822e885604 100644 --- a/server-plugins/time/package.json +++ b/server-plugins/time/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/time/src/index.ts b/server-plugins/time/src/index.ts index bd90da1424..fa18717191 100644 --- a/server-plugins/time/src/index.ts +++ b/server-plugins/time/src/index.ts @@ -50,7 +50,7 @@ export default plugin(serverTimeId, { function: { IssueToDoFactory: '' as Resource<(tx: Tx, control: TriggerControl) => Promise>, IssueToDoDone: '' as Resource< - (control: TriggerControl, workslots: WorkSlot[], todo: ToDo, isDerived: boolean) => Promise + (control: TriggerControl, workslots: WorkSlot[], todo: ToDo, isDerived: boolean) => Promise > }, trigger: { diff --git a/server-plugins/tracker-resources/.eslintrc.js b/server-plugins/tracker-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/tracker-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/tracker-resources/eslint.config.mjs b/server-plugins/tracker-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/tracker-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/tracker-resources/package.json b/server-plugins/tracker-resources/package.json index 62ea5b992a..3b8f207684 100644 --- a/server-plugins/tracker-resources/package.json +++ b/server-plugins/tracker-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/chunter": "workspace:^0.7.0", diff --git a/server-plugins/tracker-resources/src/__tests__/dependency-shift-trigger.test.ts b/server-plugins/tracker-resources/src/__tests__/dependency-shift-trigger.test.ts index bfee2f863b..6fd9383a7b 100644 --- a/server-plugins/tracker-resources/src/__tests__/dependency-shift-trigger.test.ts +++ b/server-plugins/tracker-resources/src/__tests__/dependency-shift-trigger.test.ts @@ -71,9 +71,7 @@ jest.mock('@hcengineering/tracker', () => { }) // Imported after the mocks are registered. -// eslint-disable-next-line import/first import { OnDependencyShiftRequest } from '../index' -// eslint-disable-next-line import/first import tracker from '@hcengineering/tracker' const REAL = 'acc-real' as AccountUuid diff --git a/server-plugins/tracker-resources/src/index.ts b/server-plugins/tracker-resources/src/index.ts index ab3e82cf52..f5a972e734 100644 --- a/server-plugins/tracker-resources/src/index.ts +++ b/server-plugins/tracker-resources/src/index.ts @@ -396,7 +396,7 @@ async function doIssueUpdate (updateTx: TxUpdateDoc, control: TriggerCont const [newParent] = await control.findAll( control.ctx, tracker.class.Issue, - { _id: updateTx.operations.attachedTo as Ref }, + { _id: updateTx.operations.attachedTo }, { limit: 1 } ) @@ -653,7 +653,7 @@ async function collectShiftCollaborators ( const uniqueIds = issues.map((i) => i._id) const collabs = await control.findAll(control.ctx, core.class.Collaborator, { - attachedTo: { $in: uniqueIds as Array> } + attachedTo: { $in: uniqueIds } }) for (const c of collabs) { const target = c.attachedTo as Ref @@ -820,12 +820,7 @@ export async function OnDependencyShiftRequest (txes: Tx[], control: TriggerCont lastUpdateTimestamp: Date.now() } result.push( - control.txFactory.createTxCreateDoc( - notification.class.DocNotifyContext, - space as unknown as Ref, - contextData, - contextId - ) + control.txFactory.createTxCreateDoc(notification.class.DocNotifyContext, space, contextData, contextId) ) } @@ -849,13 +844,7 @@ export async function OnDependencyShiftRequest (txes: Tx[], control: TriggerCont shiftedIssues: recipientShifts, cascadeToken } - result.push( - control.txFactory.createTxCreateDoc( - tracker.class.DependencyShiftedNotification, - space as unknown as Ref, - notifData - ) - ) + result.push(control.txFactory.createTxCreateDoc(tracker.class.DependencyShiftedNotification, space, notifData)) } } return result diff --git a/server-plugins/tracker/.eslintrc.js b/server-plugins/tracker/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/tracker/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/tracker/eslint.config.mjs b/server-plugins/tracker/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/tracker/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/tracker/package.json b/server-plugins/tracker/package.json index f11cbb8287..646dfe2c5f 100644 --- a/server-plugins/tracker/package.json +++ b/server-plugins/tracker/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server-plugins/training-resources/.eslintrc.js b/server-plugins/training-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/training-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/training-resources/eslint.config.mjs b/server-plugins/training-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/training-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/training-resources/package.json b/server-plugins/training-resources/package.json index 689d097046..692081654d 100644 --- a/server-plugins/training-resources/package.json +++ b/server-plugins/training-resources/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/server-plugins/training/.eslintrc.js b/server-plugins/training/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/training/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/training/eslint.config.mjs b/server-plugins/training/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/training/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/training/package.json b/server-plugins/training/package.json index edcb83efa8..77706ed825 100644 --- a/server-plugins/training/package.json +++ b/server-plugins/training/package.json @@ -22,19 +22,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "eslint-config-prettier": "^8.8.0", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server-plugins/view-resources/.eslintrc.js b/server-plugins/view-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/view-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/view-resources/eslint.config.mjs b/server-plugins/view-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/view-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/view-resources/package.json b/server-plugins/view-resources/package.json index 00d5ca81bf..a317d84d29 100644 --- a/server-plugins/view-resources/package.json +++ b/server-plugins/view-resources/package.json @@ -23,18 +23,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server-plugins/view/.eslintrc.js b/server-plugins/view/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server-plugins/view/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server-plugins/view/eslint.config.mjs b/server-plugins/view/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server-plugins/view/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server-plugins/view/package.json b/server-plugins/view/package.json index 1b828c2a4a..f60ca02180 100644 --- a/server-plugins/view/package.json +++ b/server-plugins/view/package.json @@ -24,18 +24,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/server-notification": "workspace:^0.7.0", diff --git a/server/account-service/.eslintrc.js b/server/account-service/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/server/account-service/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/account-service/eslint.config.mjs b/server/account-service/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/server/account-service/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/server/account-service/package.json b/server/account-service/package.json index 9be3022b46..cead9613f8 100644 --- a/server/account-service/package.json +++ b/server/account-service/package.json @@ -22,25 +22,25 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", "@types/koa-bodyparser": "^4.3.12", "@types/koa-router": "^7.4.8", "@types/koa": "^2.15.0", "@types/koa__cors": "^5.0.0", "@types/cookies": "^0.9.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/account": "workspace:^0.7.0", diff --git a/server/account-service/src/index.ts b/server/account-service/src/index.ts index d8fafce9d6..c02d79e311 100644 --- a/server/account-service/src/index.ts +++ b/server/account-service/src/index.ts @@ -33,7 +33,7 @@ import { migrateFromOldAccounts } from './migration/migration' import { startWorkspaceMemberUnreadConsumer } from './unread' export * from './migration/utils' -export * from './migration/types' +export type * from './migration/types' const AUTH_TOKEN_COOKIE = 'account-metadata-Token' diff --git a/server/account-service/src/migration/collections/mongo.ts b/server/account-service/src/migration/collections/mongo.ts index c3c4110b9a..a3c419d2d8 100644 --- a/server/account-service/src/migration/collections/mongo.ts +++ b/server/account-service/src/migration/collections/mongo.ts @@ -115,7 +115,7 @@ export class MongoDbCollection> implements DbColle return await this.collection.findOne(query as Filter) } - async insertOne(data: Partial, idKey?: K): Promise { + async insertOne (data: Partial, idKey?: K): Promise { const res = await this.collection.insertOne(data as OptionalUnlessRequiredId) return res.insertedId @@ -179,7 +179,7 @@ export class WorkspaceMongoDbCollection extends MongoDbCollection imp super('workspace', db) } - async insertOne(data: Partial, idKey?: K): Promise { + async insertOne (data: Partial, idKey?: K): Promise { if (data.uuid === undefined) { data.uuid = new UUID().toJSON() as WorkspaceUuid } diff --git a/server/account-service/src/unread.ts b/server/account-service/src/unread.ts index 4837a8ac13..d9f367f606 100644 --- a/server/account-service/src/unread.ts +++ b/server/account-service/src/unread.ts @@ -37,10 +37,10 @@ export const WORKSPACE_MEMBER_UNREAD_GROUP = 'account-service-workspace-member-u export function createWorkspaceMemberUnreadHandler ( db: AccountDB ): ( - ctx: MeasureContext, - msg: ConsumerMessage, - control: ConsumerControl - ) => Promise { + ctx: MeasureContext, + msg: ConsumerMessage, + control: ConsumerControl +) => Promise { return async (ctx, msg, _control) => { const accounts = msg.value?.accounts if (accounts === undefined || accounts.length === 0) return diff --git a/server/account/.eslintrc.js b/server/account/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/server/account/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/account/eslint.config.mjs b/server/account/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/server/account/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/server/account/package.json b/server/account/package.json index 5473c5a78c..dfe34a0d1f 100644 --- a/server/account/package.json +++ b/server/account/package.json @@ -19,27 +19,27 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/otp-generator": "^4.0.2", "@types/pg": "^8.11.6", - "@types/node": "^24.13.3" + "@types/node": "^24.13.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/mongo": "workspace:^0.7.16", "@hcengineering/postgres": "workspace:^0.7.22", "mongodb": "^6.16.0", - "postgres": "^3.4.7", + "postgres": "^3.4.9", "@hcengineering/platform": "workspace:^0.7.20", "@hcengineering/core": "workspace:^0.7.26", "otp-generator": "^4.0.1", diff --git a/server/account/src/__tests__/operations.test.ts b/server/account/src/__tests__/operations.test.ts index a5a5676b2b..866560219d 100644 --- a/server/account/src/__tests__/operations.test.ts +++ b/server/account/src/__tests__/operations.test.ts @@ -122,7 +122,7 @@ describe('account operations', () => { socialId: { findOne: jest.fn() }, - generatePersonUuid: jest.fn().mockResolvedValue('generated-person-uuid' as PersonUuid) + generatePersonUuid: jest.fn().mockResolvedValue('generated-person-uuid') } as unknown as AccountDB const mockToken = 'test-token' @@ -1133,7 +1133,7 @@ describe('account operations', () => { return undefined }) // Reset the mock for each test - ;(mockDb.generatePersonUuid as jest.Mock).mockResolvedValue('generated-person-uuid' as PersonUuid) + ;(mockDb.generatePersonUuid as jest.Mock).mockResolvedValue('generated-person-uuid') }) test('should create basic access link', async () => { @@ -2064,8 +2064,8 @@ describe('account operations', () => { email: mockEmail, invite: mockInvite, workspace: mockWorkspace - } as any) - jest.spyOn(utils, 'doJoinByInvite').mockResolvedValue(joinResult as any) + }) + jest.spyOn(utils, 'doJoinByInvite').mockResolvedValue(joinResult) ;(mockDb.person.findOne as jest.Mock).mockResolvedValue(mockPerson) const result = await confirm(mockCtx, mockDb, mockBranding, mockToken) @@ -2544,7 +2544,7 @@ describe('account operations', () => { email: mockEmail, invite: mockInvite, workspace: mockWorkspace - } as any) + }) jest.spyOn(utils, 'signUpByEmail').mockResolvedValue({ account: mockAccountId, socialId: mockSocialId._id @@ -2606,13 +2606,13 @@ describe('account operations', () => { email: mockEmail, invite: mockInvite, workspace: mockWorkspace - } as any) + }) jest.spyOn(utils, 'signUpByEmail').mockResolvedValue({ account: mockAccountId, socialId: mockSocialId._id }) jest.spyOn(utils, 'sendEmailConfirmation').mockResolvedValue() - jest.spyOn(utils, 'doJoinByInvite').mockResolvedValue(joinResult as any) + jest.spyOn(utils, 'doJoinByInvite').mockResolvedValue(joinResult) ;(getMetadata as jest.Mock).mockReturnValue('') // No mail service configured const result = await signUpJoin(mockCtx, mockDb, mockBranding, mockToken, baseParams) @@ -3166,7 +3166,7 @@ describe('account operations', () => { const mockEmail = 'user@example.com' ;(mockDb.socialId.findOne as jest.Mock).mockResolvedValue({ value: mockEmail }) - jest.spyOn(utils, 'getWorkspaceInvite').mockResolvedValue(mockInvite as any) + jest.spyOn(utils, 'getWorkspaceInvite').mockResolvedValue(mockInvite) jest.spyOn(utils, 'checkInvite').mockResolvedValue(mockInvite.workspaceUuid) jest.spyOn(utils, 'getWorkspaceById').mockResolvedValue(mockWorkspace as any) ;(mockDb.getWorkspaceRole as jest.Mock).mockResolvedValue(AccountRole.User) @@ -3193,7 +3193,7 @@ describe('account operations', () => { const mockEmail = 'user@example.com' ;(mockDb.socialId.findOne as jest.Mock).mockResolvedValue({ value: mockEmail }) - jest.spyOn(utils, 'getWorkspaceInvite').mockResolvedValue(mockInvite as any) + jest.spyOn(utils, 'getWorkspaceInvite').mockResolvedValue(mockInvite) jest.spyOn(utils, 'checkInvite').mockResolvedValue(mockInvite.workspaceUuid) jest.spyOn(utils, 'getWorkspaceById').mockResolvedValue(mockWorkspace as any) ;(mockDb.getWorkspaceRole as jest.Mock).mockResolvedValue(null) @@ -3534,7 +3534,7 @@ describe('merge specified persons', () => { await expect( mergeSpecifiedPersons(mockCtx, mockDb, mockBranding, 'test-token', { - primaryPerson: readOnlyGuestAccountUuid as PersonUuid, + primaryPerson: readOnlyGuestAccountUuid, secondaryPerson }) ).rejects.toThrow(PlatformError) diff --git a/server/account/src/__tests__/utils.test.ts b/server/account/src/__tests__/utils.test.ts index 0d1243f02c..0bd1a0561b 100644 --- a/server/account/src/__tests__/utils.test.ts +++ b/server/account/src/__tests__/utils.test.ts @@ -70,7 +70,6 @@ import { isPasswordChangedSince, setWorkspaceMemberUnread } from '../utils' -// eslint-disable-next-line import/no-named-default import platform, { getMetadata, PlatformError, Severity, Status } from '@hcengineering/platform' import { decodeTokenVerbose, generateToken, TokenError } from '@hcengineering/server-token' import { randomBytes } from 'crypto' @@ -1959,7 +1958,7 @@ describe('account utils', () => { const mockSocialId = { key: 'email:test@example.com' as PersonId } ;(mockDb.socialId.findOne as jest.Mock).mockResolvedValue(mockSocialId) - const result = await getSocialIdByKey(mockDb, 'email:test@example.com' as PersonId) + const result = await getSocialIdByKey(mockDb, 'email:test@example.com') expect(result).toEqual(mockSocialId) expect(mockDb.socialId.findOne).toHaveBeenCalledWith({ key: 'email:test@example.com' }) }) @@ -1967,7 +1966,7 @@ describe('account utils', () => { test('should return null when social id not found', async () => { ;(mockDb.socialId.findOne as jest.Mock).mockResolvedValue(null) - const result = await getSocialIdByKey(mockDb, 'nonexistent' as PersonId) + const result = await getSocialIdByKey(mockDb, 'nonexistent') expect(result).toBeNull() }) }) diff --git a/server/account/src/collections/mongo.ts b/server/account/src/collections/mongo.ts index be150168f0..d70588b22e 100644 --- a/server/account/src/collections/mongo.ts +++ b/server/account/src/collections/mongo.ts @@ -78,7 +78,8 @@ function getFilteredQuery (query: Query): Query { } export class MongoDbCollection, K extends keyof T | undefined = undefined> -implements DbCollection { + implements DbCollection +{ constructor ( readonly name: string, readonly db: Db, diff --git a/server/account/src/collections/postgres/postgres.ts b/server/account/src/collections/postgres/postgres.ts index 8819b3184a..daeb149484 100644 --- a/server/account/src/collections/postgres/postgres.ts +++ b/server/account/src/collections/postgres/postgres.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -import { type Sql, type TransactionSql } from 'postgres' +import { ISql, type Sql } from 'postgres' import { type Data, type Version, @@ -111,14 +111,15 @@ export interface PostgresDbCollectionOptions, K ex ns?: string fieldTypes?: Record timestampFields?: Array - withRetryClient?: (callback: (client: Sql) => Promise) => Promise + withRetryClient?: (callback: (client: ISql) => Promise) => Promise } export class PostgresDbCollection, K extends keyof T | undefined = undefined> -implements DbCollection { + implements DbCollection +{ constructor ( readonly name: string, - readonly client: Sql, + readonly client: ISql, readonly options: PostgresDbCollectionOptions = {}, readonly filterFields: string[] = [] ) {} @@ -268,7 +269,7 @@ implements DbCollection { return res as T } - async unsafe (sql: string, values: any[], client?: Sql): Promise { + async unsafe (sql: string, values: any[], client?: ISql): Promise { if (client !== undefined) { return await client.unsafe(sql, values) } else if (this.options.withRetryClient !== undefined) { @@ -278,7 +279,7 @@ implements DbCollection { } } - async exists (query: Query, client?: Sql): Promise { + async exists (query: Query, client?: ISql): Promise { const [whereClause, whereValues] = this.buildWhereClause(query) const sql = `SELECT EXISTS (SELECT 1 FROM ${this.getTableName()} ${whereClause})` @@ -287,7 +288,7 @@ implements DbCollection { return result[0]?.exists === true } - async find (query: Query, sort?: Sort, limit?: number, client?: Sql): Promise { + async find (query: Query, sort?: Sort, limit?: number, client?: ISql): Promise { const sqlChunks: string[] = [this.buildSelectClause()] const [whereClause, whereValues] = this.buildWhereClause(query) @@ -309,11 +310,11 @@ implements DbCollection { return result.map((row) => this.convertToObj(row)) } - async findOne (query: Query, client?: Sql): Promise { + async findOne (query: Query, client?: ISql): Promise { return (await this.find(query, undefined, 1, client))[0] ?? null } - async insertOne (data: Partial, client?: Sql): Promise { + async insertOne (data: Partial, client?: ISql): Promise { const snakeData = convertKeysToSnakeCase(data) const keys: string[] = Object.keys(snakeData) const values = Object.values(snakeData) as any @@ -330,7 +331,7 @@ implements DbCollection { return res[0][idKey] } - async insertMany (data: Array>, client?: Sql): Promise : undefined> { + async insertMany (data: Array>, client?: ISql): Promise : undefined> { const snakeData = convertKeysToSnakeCase(data) const columns = new Set() for (const record of snakeData) { @@ -396,7 +397,7 @@ implements DbCollection { return [`SET ${updateChunks.join(', ')}`, values] } - async update (query: Query, ops: Operations, client?: Sql): Promise { + async update (query: Query, ops: Operations, client?: ISql): Promise { const sqlChunks: string[] = [`UPDATE ${this.getTableName()}`] const [updateClause, updateValues] = this.buildUpdateClause(ops) const [whereClause, whereValues] = this.buildWhereClause(query, updateValues.length) @@ -410,7 +411,7 @@ implements DbCollection { await this.unsafe(finalSql, [...updateValues, ...whereValues], client) } - async deleteMany (query: Query, client?: Sql): Promise { + async deleteMany (query: Query, client?: ISql): Promise { const sqlChunks: string[] = [`DELETE FROM ${this.getTableName()}`] const [whereClause, whereValues] = this.buildWhereClause(query) @@ -425,11 +426,12 @@ implements DbCollection { export class AccountPostgresDbCollection extends PostgresDbCollection - implements DbCollection { + implements DbCollection +{ private readonly passwordKeys = ['hash', 'salt'] constructor ( - client: Sql, + client: ISql, ns?: string, withRetryClient?: PostgresDbCollectionOptions['withRetryClient'] ) { @@ -462,7 +464,7 @@ export class AccountPostgresDbCollection )` } - async find (query: Query, sort?: Sort, limit?: number, client?: Sql): Promise { + async find (query: Query, sort?: Sort, limit?: number, client?: ISql): Promise { if (Object.keys(query).some((k) => this.passwordKeys.includes(k))) { throw new Error('Passwords are not allowed in find query conditions') } @@ -481,7 +483,7 @@ export class AccountPostgresDbCollection return result } - async insertOne (data: Partial, client?: Sql): Promise { + async insertOne (data: Partial, client?: ISql): Promise { if (Object.keys(data).some((k) => this.passwordKeys.includes(k))) { throw new Error('Passwords are not allowed in insert query') } @@ -489,7 +491,7 @@ export class AccountPostgresDbCollection return await super.insertOne(data, client) } - async update (query: Query, ops: Operations, client?: Sql): Promise { + async update (query: Query, ops: Operations, client?: ISql): Promise { if (Object.keys({ ...ops, ...query }).some((k) => this.passwordKeys.includes(k))) { throw new Error('Passwords are not allowed in update query') } @@ -497,7 +499,7 @@ export class AccountPostgresDbCollection await super.update(query, ops, client) } - async deleteMany (query: Query, client?: Sql): Promise { + async deleteMany (query: Query, client?: ISql): Promise { if (Object.keys(query).some((k) => this.passwordKeys.includes(k))) { throw new Error('Passwords are not allowed in delete query') } @@ -643,15 +645,15 @@ export class PostgresAccountDB implements AccountDB { let updateInterval: NodeJS.Timeout | null = null let executed = false - const executeMigration = async (client: Sql): Promise => { + const executeMigration = async (client: ISql): Promise => { updateInterval = setInterval(() => { this.client` UPDATE ${this.client(this.ns)}._account_applied_migrations SET last_processed_at = NOW() WHERE identifier = ${name} AND applied_at IS NULL `.catch((err) => { - console.error(`Failed to update last_processed_at for migration ${name}:`, err) - }) + console.error(`Failed to update last_processed_at for migration ${name}:`, err) + }) }, 5000) await client.unsafe(ddl) @@ -778,13 +780,13 @@ export class PostgresAccountDB implements AccountDB { } } - withRetry = async (callback: (client: TransactionSql) => Promise): Promise => { + withRetry = async (operation: (client: ISql) => Promise): Promise => { let attempt = 0 let delay = this.retryOptions.initialDelayMs while (true) { try { - return (await this.client.begin(callback)) as T + return (await this.client.begin(async (client) => await operation(client as unknown as ISql))) as T } catch (err: any) { attempt++ diff --git a/server/account/src/operations.ts b/server/account/src/operations.ts index 494459b229..fd515656d6 100644 --- a/server/account/src/operations.ts +++ b/server/account/src/operations.ts @@ -163,7 +163,7 @@ export async function loginAsGuest ( if (process.env.DISABLE_GUEST_LOGIN === 'true') { throw new PlatformError(new Status(Severity.ERROR, platform.status.Forbidden, {})) } - const guestPerson = await db.person.findOne({ uuid: readOnlyGuestAccountUuid as PersonUuid }) + const guestPerson = await db.person.findOne({ uuid: readOnlyGuestAccountUuid }) if (guestPerson == null) { throw new PlatformError(new Status(Severity.ERROR, platform.status.AccountNotFound, {})) } @@ -201,7 +201,7 @@ export async function getLoginCapabilities ( if (process.env.DISABLE_GUEST_LOGIN !== 'true') { const now = Date.now() if (guestPersonCache === undefined || now - guestPersonCache.at > GUEST_PERSON_CACHE_TTL_MS) { - const guestPerson = await db.person.findOne({ uuid: readOnlyGuestAccountUuid as PersonUuid }) + const guestPerson = await db.person.findOne({ uuid: readOnlyGuestAccountUuid }) guestPersonCache = { value: guestPerson != null, at: now } } guestLoginAvailable = guestPersonCache.value @@ -285,10 +285,10 @@ export async function login ( account: existingAccount.uuid, token: isConfirmed ? generateToken( - existingAccount.tfaSecret != null ? NIL_UUID : existingAccount.uuid, - undefined, - existingAccount.tfaSecret != null ? { ...extraToken, tfaAccount: existingAccount.uuid } : extraToken - ) + existingAccount.tfaSecret != null ? NIL_UUID : existingAccount.uuid, + undefined, + existingAccount.tfaSecret != null ? { ...extraToken, tfaAccount: existingAccount.uuid } : extraToken + ) : undefined, name: getPersonName(person), socialId: emailSocialId._id, @@ -583,10 +583,10 @@ export async function validateOtp ( const _token = isConfirmed ? generateToken( - targetAccount?.tfaSecret != null ? NIL_UUID : emailSocialId.personUuid, - undefined, - targetAccount?.tfaSecret != null ? { ...extraToken, tfaAccount: emailSocialId.personUuid } : extraToken - ) + targetAccount?.tfaSecret != null ? NIL_UUID : emailSocialId.personUuid, + undefined, + targetAccount?.tfaSecret != null ? { ...extraToken, tfaAccount: emailSocialId.personUuid } : extraToken + ) : undefined return { @@ -740,11 +740,11 @@ export async function createInvite ( // TODO: Temporary solution to prevent spam using sendInvite const invitesSend = new Map< -string, -{ - lastSend: number - totalSend: number -} + string, + { + lastSend: number + totalSend: number + } >() export async function sendInvite ( @@ -2370,23 +2370,23 @@ export async function getLoginWithWorkspaceInfo ( isSystem || isDocGuest ? [] : userWorkspaces.map((it, idx) => [ - it.uuid, - { - url: it.url, - dataId: it.dataId, - mode: it.status.mode, - endpoint: getWorkspaceEndpoint(info, it.uuid, it.region), - role: roles.get(it.uuid) ?? null, - version: { - versionMajor: it.status.versionMajor, - versionMinor: it.status.versionMinor, - versionPatch: it.status.versionPatch - }, - progress: it.status.processingProgress, - branding: it.branding, - passwordAgingRule: it.passwordAgingRule - } - ]) + it.uuid, + { + url: it.url, + dataId: it.dataId, + mode: it.status.mode, + endpoint: getWorkspaceEndpoint(info, it.uuid, it.region), + role: roles.get(it.uuid) ?? null, + version: { + versionMajor: it.status.versionMajor, + versionMinor: it.status.versionMinor, + versionPatch: it.status.versionPatch + }, + progress: it.status.processingProgress, + branding: it.branding, + passwordAgingRule: it.passwordAgingRule + } + ]) ), socialIds } @@ -2838,13 +2838,13 @@ async function listApiTokens ( expiresOn: number revoked: boolean }> - > { +> { const { account, extra } = decodeTokenVerbose(ctx, token) verifyNotApiToken(extra) const tokens = await db.apiToken.find({ accountUuid: account }) const wsUuids = [...new Set(tokens.map((t) => t.workspaceUuid))] - const workspaces = await db.workspace.find({ uuid: { $in: wsUuids } as any }) + const workspaces = await db.workspace.find({ uuid: { $in: wsUuids } }) const wsMap = new Map(workspaces.map((w) => [w.uuid, w.name ?? w.url])) return tokens.map((t) => ({ diff --git a/server/account/src/serviceOperations.ts b/server/account/src/serviceOperations.ts index f13af03345..f2c201212b 100644 --- a/server/account/src/serviceOperations.ts +++ b/server/account/src/serviceOperations.ts @@ -240,7 +240,7 @@ export async function updateWorkspaceRoleBySocialKey ( const { extra } = decodeTokenVerbose(ctx, token) verifyAllowedServices(['workspace', 'tool'], extra) - const socialId = await getSocialIdByKey(db, socialKey.toLowerCase() as PersonId) + const socialId = await getSocialIdByKey(db, socialKey.toLowerCase()) if (socialId == null) { throw new PlatformError(new Status(Severity.ERROR, platform.status.AccountNotFound, {})) } diff --git a/server/account/src/utils.ts b/server/account/src/utils.ts index 6020df3aab..f77d7de207 100644 --- a/server/account/src/utils.ts +++ b/server/account/src/utils.ts @@ -393,7 +393,7 @@ export function getAllTransactors (kind: EndpointKind): string[] { export function hashWithSalt (password: string, salt: Buffer): Buffer { // remove "as any" when types in node will be fixed - return pbkdf2Sync(password, salt as any, 1000, 32, 'sha256') + return pbkdf2Sync(password, salt, 1000, 32, 'sha256') } export function verifyPassword (password: string, hash?: Buffer | null, salt?: Buffer | null): boolean { @@ -402,7 +402,7 @@ export function verifyPassword (password: string, hash?: Buffer | null, salt?: B } // remove "as any" when types in node will be fixed - return Buffer.compare(hash as any, hashWithSalt(password, salt) as any) === 0 + return Buffer.compare(hash, hashWithSalt(password, salt)) === 0 } // 0 or negative value means no limit @@ -945,15 +945,15 @@ export async function updateAllowReadOnlyGuests ( return undefined } - let guestPerson = await db.person.findOne({ uuid: readOnlyGuestAccountUuid as PersonUuid }) + let guestPerson = await db.person.findOne({ uuid: readOnlyGuestAccountUuid }) if (guestPerson == null) { await db.person.insertOne({ - uuid: readOnlyGuestAccountUuid as PersonUuid, + uuid: readOnlyGuestAccountUuid, firstName: 'Anonymous', lastName: 'Guest' }) - await createAccount(db, readOnlyGuestAccountUuid as PersonUuid, true) - guestPerson = await db.person.findOne({ uuid: readOnlyGuestAccountUuid as PersonUuid }) + await createAccount(db, readOnlyGuestAccountUuid, true) + guestPerson = await db.person.findOne({ uuid: readOnlyGuestAccountUuid }) } const roleInWorkspace = await db.getWorkspaceRole(readOnlyGuestAccountUuid, workspace) if (roleInWorkspace == null) { @@ -965,7 +965,7 @@ export async function updateAllowReadOnlyGuests ( throw new PlatformError(new Status(Severity.ERROR, platform.status.InternalServerError, {})) } const guestSocialIds = await db.socialId.find({ - personUuid: readOnlyGuestAccountUuid as PersonUuid, + personUuid: readOnlyGuestAccountUuid, verifiedOn: { $gt: 0 } }) diff --git a/server/backup-service/.eslintrc.js b/server/backup-service/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/server/backup-service/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/backup-service/eslint.config.mjs b/server/backup-service/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/server/backup-service/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/server/backup-service/package.json b/server/backup-service/package.json index a61f528d55..d691b078ec 100644 --- a/server/backup-service/package.json +++ b/server/backup-service/package.json @@ -20,20 +20,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/tar-stream": "^3.1.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server/backup/.eslintrc.js b/server/backup/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server/backup/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/backup/eslint.config.mjs b/server/backup/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server/backup/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server/backup/package.json b/server/backup/package.json index ce55a762d1..87c2764e24 100644 --- a/server/backup/package.json +++ b/server/backup/package.json @@ -24,20 +24,20 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/tar-stream": "^3.1.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/server/backup/src/backup.ts b/server/backup/src/backup.ts index 59542f2cd4..66c2080be0 100644 --- a/server/backup/src/backup.ts +++ b/server/backup/src/backup.ts @@ -399,34 +399,34 @@ export async function backup ( st = Date.now() } const serverDocHash = doTrimHash(hash) as string - const currentHash = doTrimHash(digest.get(id as Ref) ?? oldHash.get(id as Ref)) + const currentHash = doTrimHash(digest.get(id) ?? oldHash.get(id as Ref)) if (currentHash !== undefined) { - const oldD = digest.get(id as Ref) - if (digest.delete(id as Ref)) { + const oldD = digest.get(id) + if (digest.delete(id)) { if (oldD !== undefined) { same.set(id as Ref, oldD) } oldHash.set(id as Ref, currentHash) } if (currentHash !== serverDocHash) { - if (changes.updated.has(id as Ref)) { + if (changes.updated.has(id)) { removeFromNeedRetrieve(needRetrieve, id as Ref) } - changes.updated.set(id as Ref, serverDocHash) + changes.updated.set(id, serverDocHash) needRetrieve.set(id as Ref, { size, contentType, hash }) changed++ - } else if (changes.updated.has(id as Ref)) { + } else if (changes.updated.has(id)) { // We have same - changes.updated.delete(id as Ref) + changes.updated.delete(id) removeFromNeedRetrieve(needRetrieve, id as Ref) processed -= 1 } } else { - if (domain === DOMAIN_BLOB && changes.added.has(id as Ref)) { + if (domain === DOMAIN_BLOB && changes.added.has(id)) { // We need to clean old need retrieve in case of duplicates. removeFromNeedRetrieve(needRetrieve, id as Ref) } - changes.added.set(id as Ref, serverDocHash) + changes.added.set(id, serverDocHash) needRetrieve.set(id as Ref, { size, contentType, hash }) changed++ } @@ -838,7 +838,7 @@ export async function backup ( } }) - const finalBuffer = Buffer.concat(buffers as any) + const finalBuffer = Buffer.concat(buffers) if (finalBuffer.length !== blob.size) { ctx.error('download blob size mismatch', { _id: blob._id, diff --git a/server/backup/src/restore.ts b/server/backup/src/restore.ts index 7a8d96f67d..c9fb1a5dcd 100644 --- a/server/backup/src/restore.ts +++ b/server/backup/src/restore.ts @@ -218,10 +218,10 @@ export async function restore ( opt.recheck === true // If recheck we check all documents. ? Array.from(changeset.entries()) : Array.from(changeset.entries()).filter( - ([it]) => - !serverChangeset.has(it) || + ([it]) => + !serverChangeset.has(it) || (serverChangeset.has(it) && doTrimHash(serverChangeset.get(it)) !== doTrimHash(changeset.get(it))) - ) + ) ) const docsToRemove = Array.from(serverChangeset.keys()).filter((it) => !changeset.has(it)) @@ -367,10 +367,12 @@ export async function restore ( if (requiredDocs.has(name as Ref)) { const chunks: Buffer[] = [] stream.on('data', (chunk) => { - chunks.push(chunk) + if (Buffer.isBuffer(chunk)) { + chunks.push(chunk) + } }) stream.on('end', () => { - const bf = Buffer.concat(chunks as any) + const bf = Buffer.concat(chunks) const d = blobs.get(name) if (d === undefined) { blobs.set(name, { doc: undefined, buffer: bf }) @@ -392,10 +394,12 @@ export async function restore ( const chunks: Buffer[] = [] const bname = name.substring(0, name.length - 5) stream.on('data', (chunk) => { - chunks.push(chunk) + if (Buffer.isBuffer(chunk)) { + chunks.push(chunk) + } }) stream.on('end', () => { - const bf = Buffer.concat(chunks as any) + const bf = Buffer.concat(chunks) let doc: Doc try { doc = JSON.parse(bf.toString()) as Doc @@ -527,11 +531,13 @@ export async function restore ( if (changeset.has(objKey) && !processed.has(objKey)) { const chunks: Buffer[] = [] stream.on('data', (chunk) => { - chunks.push(chunk) + if (Buffer.isBuffer(chunk)) { + chunks.push(chunk) + } }) stream.on('end', () => { try { - const obj = JSON.parse(Buffer.concat(chunks as any).toString()) + const obj = JSON.parse(Buffer.concat(chunks).toString()) processed.add(objKey) collectedObjects.push(obj) } catch (err) { diff --git a/server/backup/src/service.ts b/server/backup/src/service.ts index 70f5ca659c..4c686c3baf 100644 --- a/server/backup/src/service.ts +++ b/server/backup/src/service.ts @@ -212,11 +212,11 @@ class BackupWorker { } failedWorkspaces = new Map< - WorkspaceUuid, - { - info: WorkspaceInfoWithStatus - counter: number - } + WorkspaceUuid, + { + info: WorkspaceInfoWithStatus + counter: number + } >() processed = 0 diff --git a/server/backup/src/storage.ts b/server/backup/src/storage.ts index 4dd706d1a5..da58527dd7 100644 --- a/server/backup/src/storage.ts +++ b/server/backup/src/storage.ts @@ -99,7 +99,7 @@ class AdapterStorage implements BackupStorage { async loadFile (name: string): Promise { const data = await this.client.read(this.ctx, this.wsIds, join(this.root, name)) - return Buffer.concat(data as any) + return Buffer.concat(data) } async write (name: string): Promise { diff --git a/server/backup/src/utils.ts b/server/backup/src/utils.ts index 149c5136cc..8d742aaffb 100644 --- a/server/backup/src/utils.ts +++ b/server/backup/src/utils.ts @@ -22,7 +22,6 @@ import core, { MeasureContext, MeasureMetricsContext, Ref, - type Space, type Blob } from '@hcengineering/core' import { @@ -292,10 +291,12 @@ export async function backupFind ( const chunks: Buffer[] = [] stream.on('data', (chunk) => { - chunks.push(chunk) + if (Buffer.isBuffer(chunk)) { + chunks.push(chunk) + } }) stream.on('end', () => { - const bf = Buffer.concat(chunks as any) + const bf = Buffer.concat(chunks) console.log('>>>>>>>>>>>') console.log(JSON.stringify(JSON.parse(bf.toString()), undefined, 2)) console.log('>>>>>>>>>>>') @@ -653,13 +654,15 @@ export async function compactBackup ( const name = headers.name ?? '' processed++ // We found blob data - if (requiredDocs.has(name as Ref)) { + if (requiredDocs.has(name)) { const chunks: Buffer[] = [] stream.on('data', (chunk) => { - chunks.push(chunk) + if (Buffer.isBuffer(chunk)) { + chunks.push(chunk) + } }) stream.on('end', () => { - const bf = Buffer.concat(chunks as any) + const bf = Buffer.concat(chunks) const d = blobs.get(name) if (d === undefined) { blobs.set(name, { doc: undefined, buffer: bf }) @@ -683,17 +686,16 @@ export async function compactBackup ( }) } }) - } else if ( - name.endsWith('.json') && - requiredDocs.has(name.substring(0, name.length - 5) as Ref) - ) { + } else if (name.endsWith('.json') && requiredDocs.has(name.substring(0, name.length - 5))) { const chunks: Buffer[] = [] const bname = name.substring(0, name.length - 5) stream.on('data', (chunk) => { - chunks.push(chunk) + if (Buffer.isBuffer(chunk)) { + chunks.push(chunk) + } }) stream.on('end', () => { - const bf = Buffer.concat(chunks as any) + const bf = Buffer.concat(chunks) let doc: Doc try { doc = JSON.parse(bf.toString()) as Doc @@ -979,7 +981,7 @@ export function compareDomainDigest ( export function findMissingBlobs (backupBlobIds: Iterable, existingBlobIds: Set): BackupDocId[] { const missing: BackupDocId[] = [] for (const id of backupBlobIds) { - if (!existingBlobIds.has(id as string)) { + if (!existingBlobIds.has(id)) { missing.push(id) } } @@ -1005,13 +1007,13 @@ export async function loadDigest ( gunzipSync(new Uint8Array(await storage.loadFile(d.snapshot))).toString() ) for (const [k, v] of Object.entries(dChanges.added)) { - result.set(k as Ref, v) + result.set(k, v) } for (const [k, v] of Object.entries(dChanges.updated)) { - result.set(k as Ref, v) + result.set(k, v) } for (const d of dChanges.removed) { - result.delete(d as Ref>) + result.delete(d) } } catch (err: any) { ctx.warn('failed to load digest', { snapshot: d.snapshot, ...(msg ?? {}) }) @@ -1026,20 +1028,20 @@ export async function loadDigest ( const added = dataBlob.splice(0, addedCount) for (const it of added) { const [k, v] = it.split(';') - result.set(k as Ref, v) + result.set(k, v) } const updatedCount = parseInt(dataBlob.shift() ?? '0') const updated = dataBlob.splice(0, updatedCount) for (const it of updated) { const [k, v] = it.split(';') - result.set(k as Ref, v) + result.set(k, v) } const removedCount = parseInt(dataBlob.shift() ?? '0') const removed = dataBlob.splice(0, removedCount) for (const k of removed) { - result.delete(k as Ref) + result.delete(k) } } catch (err: any) { ctx.warn('digest is broken', { domain, err: err.message, snapshot, ...(msg ?? {}) }) @@ -1090,11 +1092,13 @@ export async function verifyDigest ( const chunks: Buffer[] = [] const bname = name.substring(0, name.length - 5) stream.on('data', (chunk) => { - chunks.push(chunk) + if (Buffer.isBuffer(chunk)) { + chunks.push(chunk) + } }) stream.on('end', () => { try { - const bf = Buffer.concat(chunks as any) + const bf = Buffer.concat(chunks) const doc = JSON.parse(bf.toString()) as Doc if (doc._class === core.class.Blob || doc._class === 'core:class:BlobData') { const data = migradeBlobData(doc as Blob, '') @@ -1201,7 +1205,7 @@ export async function updateDigest ( for (const it of added) { const [k, v] = it.split(';') if (validDocs.has(k as any)) { - changes.added.set(k as Ref, v) + changes.added.set(k, v) } else { lmodified = true } @@ -1212,7 +1216,7 @@ export async function updateDigest ( for (const it of updated) { const [k, v] = it.split(';') if (validDocs.has(k as any)) { - changes.updated.set(k as Ref, v) + changes.updated.set(k, v) } else { lmodified = true } @@ -1220,7 +1224,7 @@ export async function updateDigest ( const removedCount = parseInt(dataBlob.shift() ?? '0') const removed = dataBlob.splice(0, removedCount) - changes.removed = removed as Ref[] + changes.removed = removed if (addedCount === 0 && removedCount === 0 && updatedCount === 0) { // Empty digest, need to clean digestToRemove.add(snapshot) @@ -1331,10 +1335,12 @@ export async function verifyDocsFromSnapshot ( const chunks: Buffer[] = [] const bname = name.substring(0, name.length - 5) stream.on('data', (chunk) => { - chunks.push(chunk) + if (Buffer.isBuffer(chunk)) { + chunks.push(chunk) + } }) stream.on('end', () => { - const bf = Buffer.concat(chunks as any) + const bf = Buffer.concat(chunks) let doc: Doc try { doc = JSON.parse(bf.toString()) as Doc diff --git a/server/backup/tsconfig.json b/server/backup/tsconfig.json index b5ae22f6e4..c6a877cf6c 100644 --- a/server/backup/tsconfig.json +++ b/server/backup/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "./node_modules/@hcengineering/platform-rig/profiles/default/tsconfig.json", + "extends": "./node_modules/@hcengineering/platform-rig/profiles/node/tsconfig.json", "compilerOptions": { "rootDir": "./src", diff --git a/server/collaborator/.eslintrc.js b/server/collaborator/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server/collaborator/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/collaborator/eslint.config.mjs b/server/collaborator/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server/collaborator/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server/collaborator/package.json b/server/collaborator/package.json index 9077d62a21..4bc7ea8fde 100644 --- a/server/collaborator/package.json +++ b/server/collaborator/package.json @@ -25,25 +25,25 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", "@types/body-parser": "~1.19.2", "@types/express": "^4.17.13", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/compression": "~1.7.2", "@types/ws": "^8.18.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/communication-types": "workspace:^0.7.12", @@ -74,7 +74,7 @@ "yjs": "^13.6.27", "express": "^4.21.2", "body-parser": "^1.20.3", - "cors": "^2.8.5", + "cors": "^2.8.6", "ws": "^8.21.0" } } diff --git a/server/collaborator/src/rpc/index.ts b/server/collaborator/src/rpc/index.ts index d034bc4896..f6ae7c3024 100644 --- a/server/collaborator/src/rpc/index.ts +++ b/server/collaborator/src/rpc/index.ts @@ -14,4 +14,4 @@ // export * from './methods' -export * from './rpc' +export type * from './rpc' diff --git a/server/front/.eslintrc.js b/server/front/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/server/front/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/front/eslint.config.mjs b/server/front/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/server/front/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/server/front/package.json b/server/front/package.json index a95a3d1e17..ba7381cba9 100644 --- a/server/front/package.json +++ b/server/front/package.json @@ -24,26 +24,25 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "@types/express": "^4.17.13", "@types/express-fileupload": "^1.1.7", - "@types/uuid": "^8.3.1", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/body-parser": "~1.19.2", "cross-env": "~7.0.3", "ts-node": "^10.9.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/morgan": "~1.9.9" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@types/morgan": "~1.9.9", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", @@ -51,8 +50,8 @@ "express": "^4.21.2", "express-fileupload": "^1.5.1", "express-static-gzip": "^2.2.0", - "uuid": "^8.3.2", - "cors": "^2.8.5", + "uuid": "^11.1.1", + "cors": "^2.8.6", "@hcengineering/account-client": "workspace:^0.7.25", "@hcengineering/server-core": "workspace:^0.7.19", "@hcengineering/storage": "workspace:^0.7.18", @@ -60,10 +59,10 @@ "@hcengineering/server-token": "workspace:^0.7.18", "@hcengineering/attachment": "workspace:^0.7.0", "body-parser": "^1.20.3", - "sharp": "~0.34.3", + "sharp": "~0.35.3", "@hcengineering/minio": "workspace:^0.7.18", "@hcengineering/mongo": "workspace:^0.7.16", - "morgan": "^1.10.0", + "morgan": "^1.11.0", "@hcengineering/analytics": "workspace:^0.7.19" } } diff --git a/server/indexer/.eslintrc.js b/server/indexer/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/server/indexer/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/indexer/eslint.config.mjs b/server/indexer/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/server/indexer/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/server/indexer/package.json b/server/indexer/package.json index 9a75b32f7b..d539799098 100644 --- a/server/indexer/package.json +++ b/server/indexer/package.json @@ -18,21 +18,20 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/uuid": "^8.3.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server/indexer/src/indexer/index.ts b/server/indexer/src/indexer/index.ts index 998ee59f30..1d43129e33 100644 --- a/server/indexer/src/indexer/index.ts +++ b/server/indexer/src/indexer/index.ts @@ -14,5 +14,5 @@ // export * from './indexer' -export * from './types' +export type * from './types' export * from './utils' diff --git a/server/indexer/src/indexer/indexer.ts b/server/indexer/src/indexer/indexer.ts index b3eb28258f..c7144e20bf 100644 --- a/server/indexer/src/indexer/indexer.ts +++ b/server/indexer/src/indexer/indexer.ts @@ -97,7 +97,7 @@ import { import { markdownToMarkup } from '@hcengineering/text-markdown' import { type HulylakeWorkspaceClient } from '@hcengineering/hulylake-client' -export * from './types' +export type * from './types' export * from './utils' const printThresholdMs = 2500 @@ -973,7 +973,7 @@ export class FullTextIndexPipeline implements FullTextPipeline { if (value !== undefined && value !== '') { try { const readable = await this.storageAdapter?.read(ctx, this.workspace, value) - const markup = Buffer.concat(readable as any).toString() + const markup = Buffer.concat(readable).toString() let textContent = markupToText(markup) textContent = textContent .split(/ +|\t+|\f+/) @@ -1172,9 +1172,7 @@ export class FullTextIndexPipeline implements FullTextPipeline { indexedDoc: IndexedDoc ): Promise { if (docInfo !== undefined) { - let textContent = Buffer.concat( - (await this.storageAdapter?.read(ctx, this.workspace, docInfo._id)) as any - ).toString() + let textContent = Buffer.concat(await this.storageAdapter?.read(ctx, this.workspace, docInfo._id)).toString() textContent = textContent .split(/ +|\t+|\f+/) diff --git a/server/server-pipeline/.eslintrc.js b/server/server-pipeline/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/server/server-pipeline/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/server-pipeline/eslint.config.mjs b/server/server-pipeline/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/server/server-pipeline/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/server/server-pipeline/package.json b/server/server-pipeline/package.json index 295b890128..edffb9ed81 100644 --- a/server/server-pipeline/package.json +++ b/server/server-pipeline/package.json @@ -21,20 +21,20 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "ts-node": "^10.9.2", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/server/server-pipeline/src/blobStorage.ts b/server/server-pipeline/src/blobStorage.ts index efbb09b1df..e72da2a400 100644 --- a/server/server-pipeline/src/blobStorage.ts +++ b/server/server-pipeline/src/blobStorage.ts @@ -51,7 +51,7 @@ class StorageBlobAdapter implements DbAdapter { readonly ctx: MeasureContext ) {} - async traverse( + async traverse ( domain: Domain, query: DocumentQuery, options?: Pick, 'sort' | 'limit' | 'projection'> @@ -65,17 +65,17 @@ class StorageBlobAdapter implements DbAdapter { } init?: - | (( - ctx: MeasureContext, - contextVars: Record, - domains?: string[], - excludeDomains?: string[] - ) => Promise) - | undefined + | (( + ctx: MeasureContext, + contextVars: Record, + domains?: string[], + excludeDomains?: string[] + ) => Promise) + | undefined on?: ((handler: DbAdapterHandler) => void) | undefined - async rawFindAll(domain: Domain, query: DocumentQuery, options?: FindOptions): Promise { + async rawFindAll (domain: Domain, query: DocumentQuery, options?: FindOptions): Promise { return [] } @@ -86,15 +86,15 @@ class StorageBlobAdapter implements DbAdapter { } } - async rawUpdate( + async rawUpdate ( domain: Domain, query: DocumentQuery, operations: DocumentUpdate ): Promise {} - async rawDeleteMany(domain: Domain, query: DocumentQuery): Promise {} + async rawDeleteMany (domain: Domain, query: DocumentQuery): Promise {} - async findAll( + async findAll ( ctx: MeasureContext, _class: Ref>, query: DocumentQuery, @@ -103,7 +103,7 @@ class StorageBlobAdapter implements DbAdapter { return toFindResult([]) } - async groupBy(ctx: MeasureContext, domain: Domain, field: string): Promise> { + async groupBy (ctx: MeasureContext, domain: Domain, field: string): Promise> { return new Map() } diff --git a/server/tool/.eslintrc.js b/server/tool/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/server/tool/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/tool/eslint.config.mjs b/server/tool/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/server/tool/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/server/tool/package.json b/server/tool/package.json index efa4060f40..5c94f186f4 100644 --- a/server/tool/package.json +++ b/server/tool/package.json @@ -19,22 +19,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "@types/uuid": "^8.3.1", "@types/ws": "^8.18.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/js-yaml": "^4.0.9", - "@types/node": "^24.13.3" + "@types/node": "^24.13.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "mongodb": "^6.16.0", @@ -47,7 +46,7 @@ "@hcengineering/importer": "workspace:^0.7.0", "@hcengineering/model": "workspace:^0.7.17", "@hcengineering/rank": "workspace:^0.7.18", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "@hcengineering/server-token": "workspace:^0.7.18", "@hcengineering/server-core": "workspace:^0.7.19", "@hcengineering/server-client": "workspace:^0.7.16", @@ -59,6 +58,6 @@ "fast-equals": "^5.2.2", "@hcengineering/text": "workspace:^0.7.19", "@hcengineering/text-markdown": "workspace:^0.7.21", - "js-yaml": "^4.1.0" + "js-yaml": "^4.3.2" } } diff --git a/server/tool/src/index.ts b/server/tool/src/index.ts index aeb64b9097..67f39f93f8 100644 --- a/server/tool/src/index.ts +++ b/server/tool/src/index.ts @@ -183,7 +183,7 @@ export async function updateModel ( for (const op of migrateOperations) { const st = platformNow() await ctx.with(op[0], {}, async () => { - await op[1].upgrade(migrateState, async () => connection as any, mode) + await op[1].upgrade(migrateState, async () => connection, mode) }) const tdelta = platformNowDiff(st) if (tdelta > 0) { @@ -400,9 +400,9 @@ async function prepareMigrationClient ( wsIds: WorkspaceIds, queue: PlatformQueueProducer ): Promise<{ - migrateClient: MigrateClientImpl - migrateState: Map> - }> { + migrateClient: MigrateClientImpl + migrateState: Map> +}> { const migrateClient = new MigrateClientImpl( pipeline, hierarchy, diff --git a/server/tool/src/initializer.ts b/server/tool/src/initializer.ts index 8f08dd4763..406c1520d7 100644 --- a/server/tool/src/initializer.ts +++ b/server/tool/src/initializer.ts @@ -176,7 +176,7 @@ export class WorkspaceInitializer { } } - private async processDefault( + private async processDefault ( step: DefaultStep, defaults: Map>, Props> ): Promise { @@ -213,7 +213,7 @@ export class WorkspaceInitializer { } } - private async processFind(step: FindStep, vars: Record): Promise { + private async processFind (step: FindStep, vars: Record): Promise { const query = this.fillProps(step.query, vars) const res = await this.client.findOne(step._class, { ...(query as any) }) if (res === undefined) { @@ -224,7 +224,7 @@ export class WorkspaceInitializer { } } - private async processMixin(step: MixinStep, vars: Record): Promise { + private async processMixin (step: MixinStep, vars: Record): Promise { const data = await this.fillPropsWithMarkdown(step.data, vars, step.markdownFields) const { _id, space, ...props } = data if (_id === undefined || space === undefined) { @@ -233,16 +233,16 @@ export class WorkspaceInitializer { await this.client.createMixin(_id, step._class, space, step.mixin, props) } - private async processUpdate(step: UpdateStep, vars: Record): Promise { + private async processUpdate (step: UpdateStep, vars: Record): Promise { const data = await this.fillPropsWithMarkdown(step.data, vars, step.markdownFields) const { _id, space, ...props } = data if (_id === undefined || space === undefined) { throw new Error('Update step must have _id and space') } - await this.client.updateDoc(step._class, space, _id as Ref, props) + await this.client.updateDoc(step._class, space, _id, props) } - private async processBulkUpdate(step: BulkUpdateStep, vars: Record): Promise { + private async processBulkUpdate (step: BulkUpdateStep, vars: Record): Promise { const ops = this.client.apply() const docs = await this.client.findAll(step._class, { ...(step.query as any) }) const data = await this.fillPropsWithMarkdown(step.data, vars, step.markdownFields) @@ -252,7 +252,7 @@ export class WorkspaceInitializer { await ops.commit() } - private async processCreate( + private async processCreate ( step: CreateStep, vars: Record, defaults: Map>, Props> @@ -286,7 +286,7 @@ export class WorkspaceInitializer { return JSON.stringify(json) } - private async create(_class: Ref>, data: Props, _id?: Ref): Promise> { + private async create (_class: Ref>, data: Props, _id?: Ref): Promise> { const hierarchy = this.client.getHierarchy() if (hierarchy.isDerived(_class, core.class.AttachedDoc)) { @@ -317,7 +317,7 @@ export class WorkspaceInitializer { } } - private async fillPropsWithMarkdown | Props>( + private async fillPropsWithMarkdown | Props> ( data: P, vars: Record, markdownFields?: string[] @@ -352,7 +352,7 @@ export class WorkspaceInitializer { return await saveCollabJson(this.ctx, this.storageAdapter, this.wsIds, doc, markup) } - private async fillProps | Props>( + private async fillProps | Props> ( data: P, vars: Record ): Promise

{ diff --git a/server/tool/src/upgrade.ts b/server/tool/src/upgrade.ts index 21a8942e82..48849ef074 100644 --- a/server/tool/src/upgrade.ts +++ b/server/tool/src/upgrade.ts @@ -53,7 +53,7 @@ export class MigrateClientImpl implements MigrationClient { migrateState = new Map>() - async find( + async find ( domain: Domain, query: DocumentQuery, options?: FindOptions | undefined @@ -61,11 +61,11 @@ export class MigrateClientImpl implements MigrationClient { return await this.lowLevel.rawFindAll(domain, query, options) } - async groupBy(domain: Domain, field: string, query?: DocumentQuery

): Promise> { + async groupBy (domain: Domain, field: string, query?: DocumentQuery

): Promise> { return await this.lowLevel.groupBy(this.ctx, domain, field, query) } - async traverse( + async traverse ( domain: Domain, query: DocumentQuery, options?: FindOptions | undefined @@ -73,7 +73,7 @@ export class MigrateClientImpl implements MigrationClient { return await this.lowLevel.traverse(domain, query, options) } - async update(domain: Domain, query: DocumentQuery, operations: MigrateUpdate): Promise { + async update (domain: Domain, query: DocumentQuery, operations: MigrateUpdate): Promise { const t = Date.now() try { await this.lowLevel.rawUpdate(domain, query, operations) @@ -84,7 +84,7 @@ export class MigrateClientImpl implements MigrationClient { } } - async bulk( + async bulk ( domain: Domain, operations: { filter: DocumentQuery, update: MigrateUpdate }[] ): Promise { @@ -93,7 +93,7 @@ export class MigrateClientImpl implements MigrationClient { } } - async move( + async move ( sourceDomain: Domain, query: DocumentQuery, targetDomain: Domain, @@ -113,17 +113,17 @@ export class MigrateClientImpl implements MigrationClient { } } - async create(domain: Domain, doc: T | T[]): Promise { + async create (domain: Domain, doc: T | T[]): Promise { const ctx = new MeasureMetricsContext('create', {}) await this.lowLevel.upload(ctx, domain, Array.isArray(doc) ? doc : [doc]) } - async delete(domain: Domain, _id: Ref): Promise { + async delete (domain: Domain, _id: Ref): Promise { const ctx = new MeasureMetricsContext('delete', {}) await this.lowLevel.clean(ctx, domain, [_id]) } - async deleteMany(domain: Domain, query: DocumentQuery): Promise { + async deleteMany (domain: Domain, query: DocumentQuery): Promise { await this.lowLevel.rawDeleteMany(domain, query) } diff --git a/server/workspace-service/.eslintrc.js b/server/workspace-service/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/server/workspace-service/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/server/workspace-service/eslint.config.mjs b/server/workspace-service/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/server/workspace-service/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/server/workspace-service/package.json b/server/workspace-service/package.json index 51b9ddcfcf..c21f343e16 100644 --- a/server/workspace-service/package.json +++ b/server/workspace-service/package.json @@ -21,24 +21,24 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", "@types/koa-bodyparser": "^4.3.12", "@types/koa-router": "^7.4.8", "@types/koa": "^2.15.0", "@types/koa__cors": "^5.0.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/model": "workspace:^0.7.17", diff --git a/services/ai-bot/ai-core/eslint.config.mjs b/services/ai-bot/ai-core/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/ai-bot/ai-core/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/ai-bot/love-agent/Dockerfile b/services/ai-bot/love-agent/Dockerfile index 96ec249161..37d3dd1f91 100644 --- a/services/ai-bot/love-agent/Dockerfile +++ b/services/ai-bot/love-agent/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app RUN npm install -g pnpm@10 diff --git a/services/ai-bot/love-agent/package.json b/services/ai-bot/love-agent/package.json index 52e891e8e9..9eac5995eb 100644 --- a/services/ai-bot/love-agent/package.json +++ b/services/ai-bot/love-agent/package.json @@ -26,17 +26,18 @@ "esbuild": "^0.25.10", "eslint": "^8.54.0", "eslint-config-prettier": "^8.8.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-secure-coding": "^5.4.4", "prettier": "^3.6.2", "typescript": "^5.9.3" }, "dependencies": { - "@deepgram/sdk": "^4.11.2", - "@livekit/agents": "^0.7.4", - "@livekit/rtc-node": "^0.13.11", + "@deepgram/sdk": "^5.9.0", + "@livekit/agents": "^1.7.1", + "@livekit/rtc-node": "^0.13.34", "dotenv": "^16.4.5", "ws": "^8.21.0" }, diff --git a/services/ai-bot/pod-ai-bot/.eslintrc.js b/services/ai-bot/pod-ai-bot/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/ai-bot/pod-ai-bot/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/ai-bot/pod-ai-bot/Dockerfile b/services/ai-bot/pod-ai-bot/Dockerfile index 7f0e9976a8..96d2cf53fc 100644 --- a/services/ai-bot/pod-ai-bot/Dockerfile +++ b/services/ai-bot/pod-ai-bot/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/ai-bot/pod-ai-bot/eslint.config.mjs b/services/ai-bot/pod-ai-bot/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/ai-bot/pod-ai-bot/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/ai-bot/pod-ai-bot/package.json b/services/ai-bot/pod-ai-bot/package.json index e8ea0b6972..96e06f27d5 100644 --- a/services/ai-bot/pod-ai-bot/package.json +++ b/services/ai-bot/pod-ai-bot/package.json @@ -33,26 +33,24 @@ "run-local": "cross-env APP_ID=$(cat ../../../../uberflow_private/appid) PRIVATE_KEY=\"$(cat ../../../../uberflow_private/private-key.pem)\" CLIENT_ID=$(cat ../../../../uberflow_private/client-id) CLIENT_SECRET=$(cat ../../../../uberflow_private/client-secret) SERVER_SECRET=secret ACCOUNTS_URL=http://localhost:3000/ COLLABORATOR_URL=http://localhost:3078 MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin MINIO_ENDPOINT=localhost ts-node src/index.ts" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "@types/uuid": "^8.3.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "typescript": "^5.9.3" }, @@ -86,15 +84,15 @@ "@hcengineering/text-html": "workspace:^0.7.19", "@hcengineering/text-markdown": "workspace:^0.7.21", "@hcengineering/workbench": "workspace:^0.7.0", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "fast-equals": "^5.2.2", - "form-data": "^4.0.0", + "form-data": "^4.0.6", "js-tiktoken": "^1.0.14", "mongodb": "^6.16.0", "openai": "^4.56.0", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "ws": "^8.21.0" } } diff --git a/services/ai-bot/pod-ai-bot/src/controller.ts b/services/ai-bot/pod-ai-bot/src/controller.ts index 3e9cb1c859..82d8c17e94 100644 --- a/services/ai-bot/pod-ai-bot/src/controller.ts +++ b/services/ai-bot/pod-ai-bot/src/controller.ts @@ -88,9 +88,9 @@ export class AIControl { this.openai = config.OpenAIKey !== '' ? new OpenAI({ - apiKey: config.OpenAIKey, - baseURL: config.OpenAIBaseUrl === '' ? undefined : config.OpenAIBaseUrl - }) + apiKey: config.OpenAIKey, + baseURL: config.OpenAIBaseUrl === '' ? undefined : config.OpenAIBaseUrl + }) : undefined this.storageAdapter = buildStorageFromConfig(storageConfigFromEnv()) } diff --git a/services/ai-bot/pod-ai-bot/src/utils/openai.ts b/services/ai-bot/pod-ai-bot/src/utils/openai.ts index ee766e9975..75489abf07 100644 --- a/services/ai-bot/pod-ai-bot/src/utils/openai.ts +++ b/services/ai-bot/pod-ai-bot/src/utils/openai.ts @@ -196,11 +196,11 @@ export async function createChatCompletionWithTools ( reason = 'chat' ): Promise< | { - completion: string | undefined - usage: number - } + completion: string | undefined + usage: number + } | undefined - > { +> { const opt: OpenAI.RequestOptions = {} const date = new Date() if (skipCache) { @@ -256,9 +256,9 @@ export async function requestSummary ( encoding: Tiktoken, history: HistoryRecord[] ): Promise<{ - summary?: string - tokens: number - }> { + summary?: string + tokens: number +}> { const summaryPrompt: OpenAI.ChatCompletionMessageParam = { content: `Summarize the following messages, keeping the key points: ${history.map((msg) => `${msg.role}: ${msg.message}`).join('\n')}`, role: 'user' diff --git a/services/ai-bot/pod-ai-bot/src/utils/tools.ts b/services/ai-bot/pod-ai-bot/src/utils/tools.ts index 37f4730871..ce2c15c4e2 100644 --- a/services/ai-bot/pod-ai-bot/src/utils/tools.ts +++ b/services/ai-bot/pod-ai-bot/src/utils/tools.ts @@ -153,14 +153,14 @@ async function getFoldersForDocuments ( type ChangeFields = Omit & R type PredefinedTool = ChangeFields< -RunnableToolFunction, -{ - function: PredefinedToolFunction -} + RunnableToolFunction, + { + function: PredefinedToolFunction + } > type PredefinedToolFunction = Omit< -T extends string ? RunnableFunctionWithoutParse : RunnableFunctionWithParse, -'function' + T extends string ? RunnableFunctionWithoutParse : RunnableFunctionWithParse, + 'function' > type ToolFunc = (workspaceClient: WorkspaceClient, user: AccountUuid | undefined, args: any) => Promise | string diff --git a/services/analytics-collector/pod-analytics-collector/.eslintrc.js b/services/analytics-collector/pod-analytics-collector/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/analytics-collector/pod-analytics-collector/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/analytics-collector/pod-analytics-collector/Dockerfile b/services/analytics-collector/pod-analytics-collector/Dockerfile index 7cd540ba1f..92a36bff7a 100644 --- a/services/analytics-collector/pod-analytics-collector/Dockerfile +++ b/services/analytics-collector/pod-analytics-collector/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/analytics-collector/pod-analytics-collector/eslint.config.mjs b/services/analytics-collector/pod-analytics-collector/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/analytics-collector/pod-analytics-collector/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/analytics-collector/pod-analytics-collector/package.json b/services/analytics-collector/pod-analytics-collector/package.json index 46f3d7f1b9..64e08842fc 100644 --- a/services/analytics-collector/pod-analytics-collector/package.json +++ b/services/analytics-collector/pod-analytics-collector/package.json @@ -35,24 +35,23 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", @@ -64,7 +63,7 @@ "@hcengineering/server-client": "workspace:^0.7.16", "@hcengineering/server-core": "workspace:^0.7.19", "@hcengineering/server-token": "workspace:^0.7.18", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "maxmind": "^4.3.6" diff --git a/services/analytics-collector/pod-analytics-collector/src/server.ts b/services/analytics-collector/pod-analytics-collector/src/server.ts index 0e6b90f3e3..2b5e9d010b 100644 --- a/services/analytics-collector/pod-analytics-collector/src/server.ts +++ b/services/analytics-collector/pod-analytics-collector/src/server.ts @@ -67,7 +67,7 @@ function isContentValid (body: any[]): boolean { } function getRecordsByType (event: AnalyticEvent): Record { - switch (event.event as AnalyticEventType) { + switch (event.event) { case AnalyticEventType.SetTag: return { event: '$set', @@ -108,7 +108,7 @@ function getRecordsByType (event: AnalyticEvent): Record { } default: return { - event: typeof event.event === 'string' && event.event.length > 0 ? event.event : 'unknown_event' + event: 'unknown_event' } } } diff --git a/services/backup/backup-api-pod/.eslintrc.js b/services/backup/backup-api-pod/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/backup/backup-api-pod/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/backup/backup-api-pod/Dockerfile b/services/backup/backup-api-pod/Dockerfile index 71c9f093d5..e0f1927f52 100644 --- a/services/backup/backup-api-pod/Dockerfile +++ b/services/backup/backup-api-pod/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/services/backup/backup-api-pod/eslint.config.mjs b/services/backup/backup-api-pod/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/backup/backup-api-pod/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/backup/backup-api-pod/package.json b/services/backup/backup-api-pod/package.json index 479de7fa72..9e896fdc95 100644 --- a/services/backup/backup-api-pod/package.json +++ b/services/backup/backup-api-pod/package.json @@ -33,27 +33,26 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/express-fileupload": "^1.1.7", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "@types/morgan": "~1.9.9" + "@types/morgan": "~1.9.9", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", @@ -65,11 +64,11 @@ "@hcengineering/core": "workspace:^0.7.26", "@hcengineering/platform": "workspace:^0.7.20", "@hcengineering/account-client": "workspace:^0.7.25", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", - "postgres": "^3.4.7", - "sharp": "~0.34.3", - "morgan": "^1.10.0" + "postgres": "^3.4.9", + "sharp": "~0.35.3", + "morgan": "^1.11.0" } } diff --git a/services/billing/pod-billing/.eslintrc.js b/services/billing/pod-billing/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/billing/pod-billing/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/billing/pod-billing/Dockerfile b/services/billing/pod-billing/Dockerfile index 71c9f093d5..e0f1927f52 100644 --- a/services/billing/pod-billing/Dockerfile +++ b/services/billing/pod-billing/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/services/billing/pod-billing/eslint.config.mjs b/services/billing/pod-billing/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/billing/pod-billing/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/billing/pod-billing/package.json b/services/billing/pod-billing/package.json index 0a4fa32484..e269926e51 100644 --- a/services/billing/pod-billing/package.json +++ b/services/billing/pod-billing/package.json @@ -31,30 +31,28 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", "@types/morgan": "~1.9.9", "@types/on-headers": "^1.0.2", - "@types/uuid": "^8.3.1", "cross-env": "~7.0.3" }, "dependencies": { @@ -69,12 +67,12 @@ "@hcengineering/datalake": "workspace:^0.7.18", "@hcengineering/account-client": "workspace:^0.7.25", "@hcengineering/platform": "workspace:^0.7.20", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", - "morgan": "^1.10.0", - "postgres": "^3.4.7", + "morgan": "^1.11.0", + "postgres": "^3.4.9", "on-headers": "^1.0.2", - "uuid": "^8.3.2" + "uuid": "^11.1.1" } } diff --git a/services/billing/pod-billing/src/db/postgres.ts b/services/billing/pod-billing/src/db/postgres.ts index bf0b13ebaa..841d0ee86a 100644 --- a/services/billing/pod-billing/src/db/postgres.ts +++ b/services/billing/pod-billing/src/db/postgres.ts @@ -65,7 +65,7 @@ class PostgresDB implements BillingDB { return db } - async execute)[]>(query: string, params?: any[]): Promise { + async execute)[]> (query: string, params?: any[]): Promise { query = params !== undefined && params.length > 0 ? injectVars(query, params) : query return await this.sql.unsafe(query) } diff --git a/services/billing/pod-billing/src/server.ts b/services/billing/pod-billing/src/server.ts index 8f4e3455f0..7b61197445 100644 --- a/services/billing/pod-billing/src/server.ts +++ b/services/billing/pod-billing/src/server.ts @@ -104,10 +104,10 @@ export async function createServer ( const wrapRequest = (ctx: MeasureContext, name: string, fn: AsyncRequestHandler) => - (req: Request, res: Response, next: NextFunction) => { + (req: Request, res: Response, next: NextFunction) => { // eslint-disable-next-line @typescript-eslint/no-floating-promises - handleRequest(ctx, name, db, storageConfigs, fn, req, res, next) - } + handleRequest(ctx, name, db, storageConfigs, fn, req, res, next) + } app.use(morgan('short', { stream: new LogStream() })) diff --git a/services/calendar/pod-calendar-mailer/.eslintrc.js b/services/calendar/pod-calendar-mailer/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/calendar/pod-calendar-mailer/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/calendar/pod-calendar-mailer/Dockerfile b/services/calendar/pod-calendar-mailer/Dockerfile index 65bedc3dd6..3171004b98 100644 --- a/services/calendar/pod-calendar-mailer/Dockerfile +++ b/services/calendar/pod-calendar-mailer/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/calendar/pod-calendar-mailer/eslint.config.mjs b/services/calendar/pod-calendar-mailer/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/calendar/pod-calendar-mailer/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/calendar/pod-calendar-mailer/package.json b/services/calendar/pod-calendar-mailer/package.json index 32c6b56658..7c5d244d0f 100644 --- a/services/calendar/pod-calendar-mailer/package.json +++ b/services/calendar/pod-calendar-mailer/package.json @@ -33,22 +33,21 @@ "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@types/jest": "^29.5.5", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/parser": "^8.67.0", "cross-env": "~7.0.3", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/account-client": "workspace:^0.7.25", diff --git a/services/calendar/pod-calendar/.eslintrc.js b/services/calendar/pod-calendar/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/calendar/pod-calendar/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/calendar/pod-calendar/Dockerfile b/services/calendar/pod-calendar/Dockerfile index 65bedc3dd6..3171004b98 100644 --- a/services/calendar/pod-calendar/Dockerfile +++ b/services/calendar/pod-calendar/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/calendar/pod-calendar/eslint.config.mjs b/services/calendar/pod-calendar/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/calendar/pod-calendar/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/calendar/pod-calendar/package.json b/services/calendar/pod-calendar/package.json index 487f374313..252fbb735d 100644 --- a/services/calendar/pod-calendar/package.json +++ b/services/calendar/pod-calendar/package.json @@ -31,26 +31,25 @@ }, "devDependencies": { "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@typescript-eslint/parser": "^6.21.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", @@ -70,7 +69,7 @@ "@hcengineering/server-token": "workspace:^0.7.18", "@hcengineering/integration-client": "workspace:^0.7.0", "dotenv": "^16.4.5", - "cors": "^2.8.5", + "cors": "^2.8.6", "express": "^4.21.2", "fast-equals": "^5.2.2", "file-api": "^0.10.4", diff --git a/services/calendar/pod-calendar/src/config.ts b/services/calendar/pod-calendar/src/config.ts index ed7cdf9c92..703379ec9e 100644 --- a/services/calendar/pod-calendar/src/config.ts +++ b/services/calendar/pod-calendar/src/config.ts @@ -39,7 +39,7 @@ type RequiredKey = | 'WorkspaceInactivityInterval' // GoogleEnabled is derived from Credentials and WATCH_URL and has no environment variable of its own. -const envMap: { [key in Exclude]-?: string } = { +const envMap: Required, string>> = { Port: 'PORT', AccountsURL: 'ACCOUNTS_URL', diff --git a/services/calendar/pod-calendar/src/sync.ts b/services/calendar/pod-calendar/src/sync.ts index 34a1c38d43..f41853ac8d 100644 --- a/services/calendar/pod-calendar/src/sync.ts +++ b/services/calendar/pod-calendar/src/sync.ts @@ -290,10 +290,10 @@ export class IncomingSyncManager { if (event.id != null) { const _calendar = this.getEventCalendar(calendarId, event) if (_calendar !== undefined) { - const exists = (await this.client.findOne(calendar.class.Event, { + const exists = await this.client.findOne(calendar.class.Event, { eventId: event.id, calendar: _calendar._id - })) as Event | undefined + }) if (exists === undefined) { await this.saveExtEvent(event, accessRole, _calendar) } else { @@ -313,7 +313,7 @@ export class IncomingSyncManager { const diff = this.getDiff( { ...data, - recurringEventId: event.recurringEventId as Ref, + recurringEventId: event.recurringEventId, originalStartTime: parseEventDate(event.originalStartTime), isCancelled: event.status === 'cancelled' }, @@ -426,9 +426,9 @@ export class IncomingSyncManager { map: Map>, value: string ): { - contact?: Ref - extra?: string - } { + contact?: Ref + extra?: string + } { const contact = map.get(value) if (contact !== undefined) { return { @@ -467,7 +467,7 @@ export class IncomingSyncManager { return [Array.from(contacts), Array.from(extra)] } - private getDiff(data: Partial>, current: T): Partial> { + private getDiff (data: Partial>, current: T): Partial> { const res = {} for (const key in data) { if (!deepEqual((data as any)[key], (current as any)[key])) { diff --git a/services/datalake/pod-datalake/.eslintrc.js b/services/datalake/pod-datalake/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/datalake/pod-datalake/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/datalake/pod-datalake/Dockerfile b/services/datalake/pod-datalake/Dockerfile index 71c9f093d5..e0f1927f52 100644 --- a/services/datalake/pod-datalake/Dockerfile +++ b/services/datalake/pod-datalake/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/services/datalake/pod-datalake/eslint.config.mjs b/services/datalake/pod-datalake/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/datalake/pod-datalake/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/datalake/pod-datalake/package.json b/services/datalake/pod-datalake/package.json index 9834ce5c65..33d1383fd7 100644 --- a/services/datalake/pod-datalake/package.json +++ b/services/datalake/pod-datalake/package.json @@ -31,31 +31,29 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/express-fileupload": "^1.1.7", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", "@types/morgan": "~1.9.9", - "@types/on-headers": "^1.0.2", - "@types/uuid": "^8.3.1" + "@types/on-headers": "^1.0.2" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", @@ -67,18 +65,18 @@ "@hcengineering/kafka": "workspace:^0.7.18", "@hcengineering/platform": "workspace:^0.7.20", "@hcengineering/account-client": "workspace:^0.7.25", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "express-fileupload": "^1.5.1", - "postgres": "^3.4.7", + "postgres": "^3.4.9", "@aws-sdk/client-s3": "^3.1107.0", "@aws-sdk/s3-request-presigner": "^3.1107.0", "@aws-sdk/lib-storage": "^3.1107.0", "@smithy/node-http-handler": "^4.0.2", - "morgan": "^1.10.0", + "morgan": "^1.11.0", "on-headers": "^1.0.2", "lru-cache": "^11.1.0", - "uuid": "^8.3.2" + "uuid": "^11.1.1" } } diff --git a/services/datalake/pod-datalake/src/datalake/db.ts b/services/datalake/pod-datalake/src/datalake/db.ts index 683d6de101..91e0f0c73e 100644 --- a/services/datalake/pod-datalake/src/datalake/db.ts +++ b/services/datalake/pod-datalake/src/datalake/db.ts @@ -132,7 +132,7 @@ export class PostgresDB implements BlobDB { return db } - async execute)[]>(query: string, params?: any[]): Promise { + async execute)[]> (query: string, params?: any[]): Promise { query = params !== undefined && params.length > 0 ? injectVars(query, params) : query return await this.sql.unsafe(query) } diff --git a/services/datalake/pod-datalake/src/datalake/index.ts b/services/datalake/pod-datalake/src/datalake/index.ts index ea762b80ad..ba6d8d5944 100644 --- a/services/datalake/pod-datalake/src/datalake/index.ts +++ b/services/datalake/pod-datalake/src/datalake/index.ts @@ -15,5 +15,5 @@ export * from './cache' export * from './datalake' -export * from './types' +export type * from './types' export * from './utils' diff --git a/services/datalake/pod-datalake/src/s3/index.ts b/services/datalake/pod-datalake/src/s3/index.ts index 93babf74e2..7dd85cdf02 100644 --- a/services/datalake/pod-datalake/src/s3/index.ts +++ b/services/datalake/pod-datalake/src/s3/index.ts @@ -15,4 +15,4 @@ export * from './bucket' export * from './client' -export * from './types' +export type * from './types' diff --git a/services/datalake/pod-datalake/src/server.ts b/services/datalake/pod-datalake/src/server.ts index 3a3826fd41..d02a2dc7d2 100644 --- a/services/datalake/pod-datalake/src/server.ts +++ b/services/datalake/pod-datalake/src/server.ts @@ -169,10 +169,10 @@ export async function createServer ( const wrapRequest = (ctx: MeasureContext, name: string, fn: AsyncRequestHandler) => - (req: RequestWithAuth, res: Response, next: NextFunction) => { + (req: RequestWithAuth, res: Response, next: NextFunction) => { // eslint-disable-next-line @typescript-eslint/no-floating-promises - handleRequest(ctx, name, datalake, tempDir, fn, req, res, next) - } + handleRequest(ctx, name, datalake, tempDir, fn, req, res, next) + } app.use(morgan('short', { stream: new LogStream() })) diff --git a/services/export/pod-export/.eslintrc.js b/services/export/pod-export/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/export/pod-export/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/export/pod-export/Dockerfile b/services/export/pod-export/Dockerfile index 346d08a218..7662849721 100644 --- a/services/export/pod-export/Dockerfile +++ b/services/export/pod-export/Dockerfile @@ -1,5 +1,5 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/export/pod-export/eslint.config.mjs b/services/export/pod-export/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/export/pod-export/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/export/pod-export/package.json b/services/export/pod-export/package.json index 2d5bb357ac..e1b3ddf77e 100644 --- a/services/export/pod-export/package.json +++ b/services/export/pod-export/package.json @@ -31,25 +31,23 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/uuid": "^8.3.1", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", @@ -79,17 +77,17 @@ "@hcengineering/analytics-service": "workspace:^0.7.19", "@hcengineering/postgres": "workspace:^0.7.22", "@hcengineering/attachment": "workspace:^0.7.0", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "ws": "^8.21.0", "@hcengineering/drive": "workspace:^0.7.0", "@hcengineering/export": "workspace:^0.7.0", "@hcengineering/products": "workspace:^0.7.0", - "uuid": "^8.3.2", - "tar": "^7.5.2", + "uuid": "^11.1.1", + "tar": "^7.5.21", "archiver": "^7.0.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.3.2", "csv-stringify": "^6.5.2" } } diff --git a/services/export/pod-export/src/__tests__/data-mapper.test.ts b/services/export/pod-export/src/__tests__/data-mapper.test.ts index b3ce874c1a..b9ccc6feb5 100644 --- a/services/export/pod-export/src/__tests__/data-mapper.test.ts +++ b/services/export/pod-export/src/__tests__/data-mapper.test.ts @@ -58,7 +58,7 @@ function createMockTxOperations (existingDocs: Array> = []): } return { - findAll: jest.fn(async (classRef: Ref>, query: any, options?: any): Promise => { + findAll: jest.fn(async (classRef: Ref>, query: any, options?: any): Promise => { const results: T[] = [] for (const doc of docsMap.values()) { if (doc._class !== classRef) continue @@ -119,7 +119,7 @@ function createMockTxOperations (existingDocs: Array> = []): } return results }), - findOne: jest.fn(async function ( + findOne: jest.fn(async function ( this: any, classRef: Ref>, query: any, diff --git a/services/export/pod-export/src/__tests__/product-version-handler.test.ts b/services/export/pod-export/src/__tests__/product-version-handler.test.ts index ac5e1703ab..93c54353ab 100644 --- a/services/export/pod-export/src/__tests__/product-version-handler.test.ts +++ b/services/export/pod-export/src/__tests__/product-version-handler.test.ts @@ -88,7 +88,7 @@ function makeTargetClient (existing: ProductVersion[] = []): { const created: ProductVersion[] = [] const client = { - findOne: jest.fn(async (classRef: Ref>, query: any): Promise => { + findOne: jest.fn(async (classRef: Ref>, query: any): Promise => { for (const d of docs) { if (d._class !== classRef) continue let ok = true @@ -144,9 +144,9 @@ function makeHandlerCtx ( targetClient: TxOperations, spaceMap: Record> ): { - ctx: CustomExportHandlerContext - spaceExporter: { getOrCreateTargetSpace: jest.Mock } - } { + ctx: CustomExportHandlerContext + spaceExporter: { getOrCreateTargetSpace: jest.Mock } +} { const spaceExporter = { getOrCreateTargetSpace: jest.fn(async (sourceSpaceId: Ref) => { const target = spaceMap[sourceSpaceId as unknown as string] diff --git a/services/export/pod-export/src/__tests__/relation-exporter.test.ts b/services/export/pod-export/src/__tests__/relation-exporter.test.ts index fa2e8ed339..e748bdb692 100644 --- a/services/export/pod-export/src/__tests__/relation-exporter.test.ts +++ b/services/export/pod-export/src/__tests__/relation-exporter.test.ts @@ -67,7 +67,7 @@ function lowLevelForDocs (...docs: Doc[]): LowLevelStorage { byDomain.set(domain, list) } return { - rawFindAll: jest.fn(async (_domain: string, query: any): Promise => { + rawFindAll: jest.fn(async (_domain: string, query: any): Promise => { const domainDocs = byDomain.get(_domain) ?? [] return domainDocs.filter((d) => { if (query._id !== undefined && d._id !== query._id) return false diff --git a/services/export/pod-export/src/__tests__/workspace-exporter.test.ts b/services/export/pod-export/src/__tests__/workspace-exporter.test.ts index 7873797622..5614477cb9 100644 --- a/services/export/pod-export/src/__tests__/workspace-exporter.test.ts +++ b/services/export/pod-export/src/__tests__/workspace-exporter.test.ts @@ -114,7 +114,7 @@ function createMockHierarchy (config: { function createMockLowLevelStorage (documents: Map): LowLevelStorage { return { - rawFindAll: jest.fn(async (domain: string, query: any): Promise => { + rawFindAll: jest.fn(async (domain: string, query: any): Promise => { const allDocs = documents.get(domain) ?? [] return allDocs.filter((doc) => { @@ -155,7 +155,7 @@ function createMockLowLevelStorage (documents: Map): LowLevelStor return true }) as T[] }), - traverse: jest.fn(async (domain: string, query: any) => { + traverse: jest.fn(async (domain: string, query: any) => { const docs = documents.get(domain) ?? [] let returned = false return { @@ -183,7 +183,7 @@ function createMockTxOperations ( const createdDocs: Doc[] = [] return { - findAll: jest.fn(async (classRef: Ref>, query: any): Promise => { + findAll: jest.fn(async (classRef: Ref>, query: any): Promise => { if (classRef === core.class.Space || query._class !== undefined) { return existingSpaces.filter((s) => { if (query.name !== undefined && s.name !== query.name) return false @@ -200,14 +200,14 @@ function createMockTxOperations ( return existingDocs.filter((d) => d._class === classRef) as unknown as T[] }), createDoc: jest.fn( - async (classRef: Ref>, space: Ref, data: any, id?: Ref): Promise> => { + async (classRef: Ref>, space: Ref, data: any, id?: Ref): Promise> => { const docId = id ?? generateId() - createdDocs.push({ _id: docId, _class: classRef, space, ...data } as unknown as Doc) + createdDocs.push({ _id: docId, _class: classRef, space, ...data }) return docId } ), addCollection: jest.fn( - async ( + async ( classRef: Ref>, space: Ref, attachedTo: Ref, @@ -225,7 +225,7 @@ function createMockTxOperations ( attachedToClass, collection, ...data - } as unknown as Doc) + }) return docId } ), @@ -602,7 +602,7 @@ describe('CrossWorkspaceExporter', () => { const result = await exporter.export({ sourceWorkspace: createWorkspaceIds('source-ws'), targetWorkspace: createWorkspaceIds('target-ws'), - sourceQuery: { _id: SOURCE_DOC_1 } as any, + sourceQuery: { _id: SOURCE_DOC_1 }, _class: mockDocClass, includeChildren: false }) @@ -674,7 +674,7 @@ describe('CrossWorkspaceExporter', () => { const result = await exporter.export({ sourceWorkspace: createWorkspaceIds('source-ws'), targetWorkspace: createWorkspaceIds('target-ws'), - sourceQuery: { _id: SOURCE_DOC_1 } as any, + sourceQuery: { _id: SOURCE_DOC_1 }, _class: mockDocClass, includeChildren: true }) @@ -738,7 +738,7 @@ describe('CrossWorkspaceExporter', () => { const result = await exporter.export({ sourceWorkspace: createWorkspaceIds('source-ws'), targetWorkspace: createWorkspaceIds('target-ws'), - sourceQuery: { _id: SOURCE_DOC_2 as any }, + sourceQuery: { _id: SOURCE_DOC_2 }, _class: mockDocClass, relations }) diff --git a/services/export/pod-export/src/converter.ts b/services/export/pod-export/src/converter.ts index e1b439b050..c96833ebec 100644 --- a/services/export/pod-export/src/converter.ts +++ b/services/export/pod-export/src/converter.ts @@ -362,7 +362,7 @@ export class UnifiedConverter { return '' } - const markup = Buffer.concat(buffer as any).toString() + const markup = Buffer.concat(buffer).toString() // const markdown = await markupToMarkdown(markup, '', '') return markup // todo: test it is a markdown } catch (err) { @@ -420,7 +420,7 @@ export class UnifiedConverter { return Buffer.from([]) } - return Buffer.concat(buffer as any) + return Buffer.concat(buffer) } catch (err) { this.context.warn(`Failed to read attachment: ${att._id}`, { error: err instanceof Error ? err.message : String(err) diff --git a/services/export/pod-export/src/index.ts b/services/export/pod-export/src/index.ts index 9353cda211..eeb1b86043 100644 --- a/services/export/pod-export/src/index.ts +++ b/services/export/pod-export/src/index.ts @@ -16,7 +16,7 @@ import { config } from 'dotenv' import { main } from './main' -export * from './types' +export type * from './types' export * from './exporter' config() diff --git a/services/export/pod-export/src/server.ts b/services/export/pod-export/src/server.ts index b0dae8fc4c..30f0b9133e 100644 --- a/services/export/pod-export/src/server.ts +++ b/services/export/pod-export/src/server.ts @@ -15,7 +15,7 @@ // import { getClient, isWorkspaceLoginInfo } from '@hcengineering/account-client' -import client, { ClientSocket } from '@hcengineering/client' +import client from '@hcengineering/client' import core, { AccountRole, AccountUuid, @@ -174,7 +174,7 @@ const normalizeRelations = (input: unknown): RelationDefinition[] | undefined => } if (typeof value === 'string') { - result.push({ field: key, class: value as Ref>, direction: 'forward' }) + result.push({ field: key, class: value, direction: 'forward' }) continue } @@ -662,7 +662,7 @@ async function createPlatformClient (token: string): Promise { headers: { 'User-Agent': process.env.SERVICE_ID } - }) as never as ClientSocket + }) as never }) const endpoint = await getTransactorEndpoint(token) diff --git a/services/export/pod-export/src/workspace/attachment-exporter.ts b/services/export/pod-export/src/workspace/attachment-exporter.ts index eaa6c1e02e..52ddf94026 100644 --- a/services/export/pod-export/src/workspace/attachment-exporter.ts +++ b/services/export/pod-export/src/workspace/attachment-exporter.ts @@ -107,9 +107,9 @@ export class AttachmentExporter { } try { - const blobBuffers = await this.storage.read(this.context, this.sourceWorkspace, blobRef as string) + const blobBuffers = await this.storage.read(this.context, this.sourceWorkspace, blobRef) if (blobBuffers !== undefined && blobBuffers.length > 0) { - const sourceBlob = await this.storage.stat(this.context, this.sourceWorkspace, blobRef as string) + const sourceBlob = await this.storage.stat(this.context, this.sourceWorkspace, blobRef) if (sourceBlob !== undefined) { const totalSize = blobBuffers.reduce((sum, buf) => sum + buf.length, 0) const combinedBuffer = Buffer.concat(blobBuffers) @@ -117,7 +117,7 @@ export class AttachmentExporter { await this.storage.put( this.context, this.targetWorkspace, - blobRef as string, + blobRef, combinedBuffer, sourceBlob.contentType ?? 'application/json', totalSize @@ -165,9 +165,9 @@ export class AttachmentExporter { } try { - const blobBuffers = await this.storage.read(this.context, this.sourceWorkspace, blobRef as string) + const blobBuffers = await this.storage.read(this.context, this.sourceWorkspace, blobRef) if (blobBuffers !== undefined && blobBuffers.length > 0) { - const sourceBlob = await this.storage.stat(this.context, this.sourceWorkspace, blobRef as string) + const sourceBlob = await this.storage.stat(this.context, this.sourceWorkspace, blobRef) if (sourceBlob !== undefined) { const totalSize = blobBuffers.reduce((sum, buf) => sum + buf.length, 0) const combinedBuffer = Buffer.concat(blobBuffers) @@ -175,7 +175,7 @@ export class AttachmentExporter { await this.storage.put( this.context, this.targetWorkspace, - blobRef as string, + blobRef, combinedBuffer, sourceBlob.contentType ?? 'application/json', totalSize @@ -275,7 +275,7 @@ export class AttachmentExporter { await this.targetClient.addCollection( attachment._class, (attachment as any).space, - targetDocId as any, + targetDocId, targetDocClass, 'attachments', data, diff --git a/services/export/pod-export/src/workspace/document-exporter.ts b/services/export/pod-export/src/workspace/document-exporter.ts index 86344d1fe7..c1891143ef 100644 --- a/services/export/pod-export/src/workspace/document-exporter.ts +++ b/services/export/pod-export/src/workspace/document-exporter.ts @@ -300,7 +300,7 @@ export class DocumentExporter { await this.targetClient.addCollection( attachedDoc._class, targetSpace, - attachedTo as any, + attachedTo, attachedToClass, collection, attachedData, diff --git a/services/export/pod-export/src/workspace/index.ts b/services/export/pod-export/src/workspace/index.ts index 996bd36dde..5bc6ef8a3e 100644 --- a/services/export/pod-export/src/workspace/index.ts +++ b/services/export/pod-export/src/workspace/index.ts @@ -13,7 +13,7 @@ // limitations under the License. // -export * from './types' +export type * from './types' export { CrossWorkspaceExporter } from './workspace-exporter' export { DataMapper } from './data-mapper' export { SpaceExporter } from './space-exporter' diff --git a/services/export/pod-export/src/workspace/relation-exporter.ts b/services/export/pod-export/src/workspace/relation-exporter.ts index cfebb471e7..cde2ee2ec2 100644 --- a/services/export/pod-export/src/workspace/relation-exporter.ts +++ b/services/export/pod-export/src/workspace/relation-exporter.ts @@ -188,7 +188,7 @@ export class RelationExporter { } await this.exportRelatedDocument( - ref as Ref, + ref, relation.class, conflictStrategy, includeAttachments, diff --git a/services/export/pod-export/src/workspace/workspace-exporter.ts b/services/export/pod-export/src/workspace/workspace-exporter.ts index ddf6d606fe..aa8db9c182 100644 --- a/services/export/pod-export/src/workspace/workspace-exporter.ts +++ b/services/export/pod-export/src/workspace/workspace-exporter.ts @@ -193,7 +193,7 @@ export class CrossWorkspaceExporter { sourceClass: doc.sourceClass, field: doc.field, class: doc.targetClass, - direction: (doc.direction ?? 'forward') as 'forward' | 'inverse' + direction: doc.direction ?? 'forward' })) } } catch (err: any) { diff --git a/services/github-next/github-next-service/Dockerfile b/services/github-next/github-next-service/Dockerfile new file mode 100644 index 0000000000..7309a6a5c6 --- /dev/null +++ b/services/github-next/github-next-service/Dockerfile @@ -0,0 +1,6 @@ +FROM tracexapp/base-slim:v20261006 +WORKDIR /usr/src/app + +COPY bundle/bundle.js ./ + +CMD [ "dumb-init", "node", "bundle.js" ] diff --git a/services/github-next/github-next-service/eslint.config.mjs b/services/github-next/github-next-service/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/github-next/github-next-service/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/github/github-assets/.eslintrc.js b/services/github/github-assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/services/github/github-assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/github/github-assets/eslint.config.mjs b/services/github/github-assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/services/github/github-assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/services/github/github-assets/package.json b/services/github/github-assets/package.json index b1a2e4cc3f..2efaf9d321 100644 --- a/services/github/github-assets/package.json +++ b/services/github/github-assets/package.json @@ -25,19 +25,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5", "prettier": "^3.6.2", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "typescript": "^5.9.3" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", @@ -53,8 +53,8 @@ "import": "./lang/*.json" }, "./lang": { - "require": "./lang", - "import": "./lang" + "types": "./types/lang.d.ts", + "default": "./lib/lang.js" }, "./assets": { "require": "./assets", diff --git a/services/github/github-assets/src/lang.ts b/services/github/github-assets/src/lang.ts new file mode 100644 index 0000000000..e656e3b4ad --- /dev/null +++ b/services/github/github-assets/src/lang.ts @@ -0,0 +1,18 @@ +// +// Copyright © 2026 TraceX SAS. +// +// Licensed under the PolyForm Shield License 1.0.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://polyformproject.org/licenses/shield/1.0.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import type { Loader } from '@hcengineering/platform' + +export const loadLang: Loader = async (lang) => await import(`../lang/${lang}.json`) diff --git a/services/github/github-resources/.eslintrc.js b/services/github/github-resources/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/services/github/github-resources/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/services/github/github-resources/eslint.config.mjs b/services/github/github-resources/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/services/github/github-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/services/github/github-resources/package.json b/services/github/github-resources/package.json index 94b262b012..036562ef35 100644 --- a/services/github/github-resources/package.json +++ b/services/github/github-resources/package.json @@ -19,23 +19,22 @@ "svelte-loader": "^3.2.0", "sass": "^1.80.0", "svelte-preprocess": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier-plugin-svelte": "^3.4.0", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "typescript": "^5.9.3", "@types/qs": "~6.9.7", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint-plugin-svelte": "^2.35.1", - "svelte-eslint-parser": "^0.33.1" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "svelte-eslint-parser": "^1.8.1", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/services/github/github-resources/src/components/Connect.svelte b/services/github/github-resources/src/components/Connect.svelte index e4f1053b3a..c45c2b1e5e 100644 --- a/services/github/github-resources/src/components/Connect.svelte +++ b/services/github/github-resources/src/components/Connect.svelte @@ -57,10 +57,10 @@ projects = res }) - function save (): void { + function save(): void { void updateGithubAccountIntegrationLogin(auth?.login ?? '', integration) } - function onConnect (): void { + function onConnect(): void { const state = btoa( JSON.stringify({ accountId: getCurrentAccount().primarySocialId, @@ -124,7 +124,7 @@ {#if integrations.length === 0}

- {#await translate(github.string.NoIntegrationsConfigured, { appName: getMetadata(github.metadata.GithubApplication), title: getMetadata(ui.metadata.PlatformTitle) }) then msg} + {#await translate( github.string.NoIntegrationsConfigured, { appName: getMetadata(github.metadata.GithubApplication), title: getMetadata(ui.metadata.PlatformTitle) } ) then msg} {/await}
diff --git a/services/github/github-resources/src/components/ConnectApp.svelte b/services/github/github-resources/src/components/ConnectApp.svelte index 37a71e62ad..96d50e9201 100644 --- a/services/github/github-resources/src/components/ConnectApp.svelte +++ b/services/github/github-resources/src/components/ConnectApp.svelte @@ -20,7 +20,7 @@ let installationId: number | undefined let showSelector = false - async function createIntegration (loc: Location): Promise { + async function createIntegration(loc: Location): Promise { if (loc.query?.error != null) { window.close() return @@ -39,7 +39,7 @@ return } - function doAutoClose (): void { + function doAutoClose(): void { autoClose = 3 clearInterval(interval) interval = setInterval(() => { diff --git a/services/github/github-resources/src/components/ConnectProject.svelte b/services/github/github-resources/src/components/ConnectProject.svelte index c76c633e0a..7b29635658 100644 --- a/services/github/github-resources/src/components/ConnectProject.svelte +++ b/services/github/github-resources/src/components/ConnectProject.svelte @@ -50,7 +50,7 @@ const client = getClient() - async function assignRepository (project: Ref): Promise { + async function assignRepository(project: Ref): Promise { if (project === undefined) { return } @@ -126,7 +126,7 @@ (client.getHierarchy().asIf(it, github.mixin.GithubProject)?.integration ?? integration._id) === integration._id ) .concat(orphanProjects) - async function selectProject (event: MouseEvent): Promise { + async function selectProject(event: MouseEvent): Promise { showPopup( DropdownLabelsPopup, { diff --git a/services/github/github-resources/src/components/GithubIssueHeader.svelte b/services/github/github-resources/src/components/GithubIssueHeader.svelte index 979d900852..d74f082aa7 100644 --- a/services/github/github-resources/src/components/GithubIssueHeader.svelte +++ b/services/github/github-resources/src/components/GithubIssueHeader.svelte @@ -21,7 +21,7 @@ $: repository = ghIssue?.repository !== undefined ? $integrationRepositories.get(ghIssue.repository) : undefined - async function assignRepository (repository: Ref): Promise { + async function assignRepository(repository: Ref): Promise { if (ghIssue !== undefined) { // We just need to assign the repository to the issue await getClient().update(ghIssue, { repository }) diff --git a/services/github/github-resources/src/components/GithubIssueInfoHeader.svelte b/services/github/github-resources/src/components/GithubIssueInfoHeader.svelte index 1b90823f8b..4c7c7f3440 100644 --- a/services/github/github-resources/src/components/GithubIssueInfoHeader.svelte +++ b/services/github/github-resources/src/components/GithubIssueInfoHeader.svelte @@ -57,14 +57,14 @@ selectedRepository = components.find((it) => it._id === newRepositoryId) } - function performOK (repository: Ref | undefined): void { + function performOK(repository: Ref | undefined): void { $state.repository = repository ?? undefined handleOkClick() } $: void handleSelectedRepositoryIdUpdated(repository, rawRepositories) - function getRepositoryInfo (rawComponents: GithubIntegrationRepository[]): SelectPopupValueType[] { + function getRepositoryInfo(rawComponents: GithubIntegrationRepository[]): SelectPopupValueType[] { return [ ...rawComponents.map((p) => ({ id: p._id, @@ -84,7 +84,7 @@ let repositories: SelectPopupValueType[] = [] $: repositories = getRepositoryInfo(rawRepositories) - function updateProjectPreferences ( + function updateProjectPreferences( space: Ref, spacePreferences: ProjectTargetPreference | undefined, repository: Ref | undefined diff --git a/services/github/github-resources/src/components/GithubRepositories.svelte b/services/github/github-resources/src/components/GithubRepositories.svelte index 12552f3f81..28a250e97a 100644 --- a/services/github/github-resources/src/components/GithubRepositories.svelte +++ b/services/github/github-resources/src/components/GithubRepositories.svelte @@ -38,7 +38,7 @@ let limit = 5 - async function disconnect (prj: GithubProject, repository: GithubIntegrationRepository): Promise { + async function disconnect(prj: GithubProject, repository: GithubIntegrationRepository): Promise { // We need to disable repository first await client.update(repository, { enabled: false, @@ -78,7 +78,7 @@ // await ops.commit() } - async function onDisconnect ( + async function onDisconnect( event: MouseEvent, prj: GithubProject, repository: GithubIntegrationRepository @@ -118,7 +118,7 @@ return (b.updatedAt ?? 0) - (a.updatedAt ?? 0) }) - async function showMenu (evt: MouseEvent, prj: GithubProject, repository: GithubIntegrationRepository): Promise { + async function showMenu(evt: MouseEvent, prj: GithubProject, repository: GithubIntegrationRepository): Promise { if (isAdminUser()) { const actions: Action[] = [ { diff --git a/services/github/github-resources/src/components/IntegrationState.svelte b/services/github/github-resources/src/components/IntegrationState.svelte index 06f4a65dd7..3b1c4e765b 100644 --- a/services/github/github-resources/src/components/IntegrationState.svelte +++ b/services/github/github-resources/src/components/IntegrationState.svelte @@ -34,7 +34,7 @@ const client = getClient() $: loadIntegration(integration) - async function loadIntegration (integration: Integration): Promise { + async function loadIntegration(integration: Integration): Promise { try { const installationId = integration?.data?.installationId ?? [] const installations = Array.isArray(installationId) ? installationId : [installationId] diff --git a/services/github/github-resources/src/components/MarkdownDescriptionDiff.svelte b/services/github/github-resources/src/components/MarkdownDescriptionDiff.svelte index 509a58abbb..67ff75dea2 100644 --- a/services/github/github-resources/src/components/MarkdownDescriptionDiff.svelte +++ b/services/github/github-resources/src/components/MarkdownDescriptionDiff.svelte @@ -4,7 +4,7 @@ import { DocSyncInfo } from '@hcengineering/github' export let issue: DocSyncInfo - function allowEdit (): void { + function allowEdit(): void { void getClient().update(issue, { isDescriptionLocked: false, needSync: '' diff --git a/services/github/github-resources/src/components/PullRequestDiff.svelte b/services/github/github-resources/src/components/PullRequestDiff.svelte index dd58d2c568..c2a34d1e5d 100644 --- a/services/github/github-resources/src/components/PullRequestDiff.svelte +++ b/services/github/github-resources/src/components/PullRequestDiff.svelte @@ -57,7 +57,7 @@ const client = getClient() - async function handleFileViewed (fileName: string, sha: string, viewed: boolean): Promise { + async function handleFileViewed(fileName: string, sha: string, viewed: boolean): Promise { const current = await client.findOne(github.class.GithubPullRequestReview, { attachedTo: pullRequest._id, author: me diff --git a/services/github/github-resources/src/components/PullRequestsView.svelte b/services/github/github-resources/src/components/PullRequestsView.svelte index ca8143dfed..c829cf97dd 100644 --- a/services/github/github-resources/src/components/PullRequestsView.svelte +++ b/services/github/github-resources/src/components/PullRequestsView.svelte @@ -18,7 +18,7 @@ let viewOptions: ViewOptions | undefined let search = '' let searchQuery: DocumentQuery = { ...query } - function updateSearchQuery (search: string): void { + function updateSearchQuery(search: string): void { searchQuery = search === '' ? { ...query } : { ...query, $search: search } } $: if (query) updateSearchQuery(search) diff --git a/services/github/github-resources/src/components/RepositoryPresenterRefEditor.svelte b/services/github/github-resources/src/components/RepositoryPresenterRefEditor.svelte index 70aae9248c..013aab1c5e 100644 --- a/services/github/github-resources/src/components/RepositoryPresenterRefEditor.svelte +++ b/services/github/github-resources/src/components/RepositoryPresenterRefEditor.svelte @@ -57,7 +57,7 @@ $: void handleSelectedRepositoryIdUpdated(value, rawComponents) - function getRepositoryInfo ( + function getRepositoryInfo( rawComponents: GithubIntegrationRepository[], sp: GithubIntegrationRepository | undefined ): SelectPopupValueType[] { diff --git a/services/github/github-resources/src/components/RepositorySelector.svelte b/services/github/github-resources/src/components/RepositorySelector.svelte index d4d7561d44..5323e7b0d1 100644 --- a/services/github/github-resources/src/components/RepositorySelector.svelte +++ b/services/github/github-resources/src/components/RepositorySelector.svelte @@ -45,7 +45,7 @@ $: void handleSelectedRepositoryIdUpdated(value, rawComponents) - function getRepositoryInfo ( + function getRepositoryInfo( rawComponents: GithubIntegrationRepository[], sp: GithubIntegrationRepository | undefined ): SelectPopupValueType[] { diff --git a/services/github/github-resources/src/components/presenters/GithubReviewPresenter.svelte b/services/github/github-resources/src/components/presenters/GithubReviewPresenter.svelte index d1ee736e80..c513728c74 100644 --- a/services/github/github-resources/src/components/presenters/GithubReviewPresenter.svelte +++ b/services/github/github-resources/src/components/presenters/GithubReviewPresenter.svelte @@ -33,7 +33,7 @@ person = undefined } - function getCommentFromState (value?: GithubPullRequestReviewState): { + function getCommentFromState(value?: GithubPullRequestReviewState): { label: IntlString color?: number } { diff --git a/services/github/github-resources/src/components/presenters/GithubReviewThreadPresenter.svelte b/services/github/github-resources/src/components/presenters/GithubReviewThreadPresenter.svelte index 8e57c10ec1..2086826c06 100644 --- a/services/github/github-resources/src/components/presenters/GithubReviewThreadPresenter.svelte +++ b/services/github/github-resources/src/components/presenters/GithubReviewThreadPresenter.svelte @@ -49,7 +49,7 @@ ) let expanded = !value.isResolved - async function onMessage (event: CustomEvent): Promise { + async function onMessage(event: CustomEvent): Promise { await getClient().addCollection( github.class.GithubReviewComment, value.space, @@ -74,7 +74,7 @@ } ) } - async function changeResolution (): Promise { + async function changeResolution(): Promise { if (value.isResolved) { await getClient().update(value, { isResolved: false, resolvedBy: null }) } else { @@ -82,7 +82,7 @@ } } - function onDiffExpand (nextExpanded: boolean): void { + function onDiffExpand(nextExpanded: boolean): void { expanded = nextExpanded } diff --git a/services/github/github-resources/src/components/presenters/PullRequestReviewDecisionValuePresenter.svelte b/services/github/github-resources/src/components/presenters/PullRequestReviewDecisionValuePresenter.svelte index 17e6cdab38..66bb295889 100644 --- a/services/github/github-resources/src/components/presenters/PullRequestReviewDecisionValuePresenter.svelte +++ b/services/github/github-resources/src/components/presenters/PullRequestReviewDecisionValuePresenter.svelte @@ -9,8 +9,8 @@ export let small = false const labels: Record< - GithubReviewDecisionState, - { label: IntlString, color: number, icon: Asset | AnySvelteComponent | ComponentType } + GithubReviewDecisionState, + { label: IntlString, color: number, icon: Asset | AnySvelteComponent | ComponentType } > = { [GithubReviewDecisionState.Approved]: { icon: github.icon.PullRequest, diff --git a/services/github/github/.eslintrc.js b/services/github/github/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/github/github/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/github/github/eslint.config.mjs b/services/github/github/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/github/github/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/github/github/package.json b/services/github/github/package.json index 759b14158e..f6d40f34bb 100644 --- a/services/github/github/package.json +++ b/services/github/github/package.json @@ -22,18 +22,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/services/github/model-github/.eslintrc.js b/services/github/model-github/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/services/github/model-github/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/github/model-github/eslint.config.mjs b/services/github/model-github/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/services/github/model-github/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/services/github/model-github/package.json b/services/github/model-github/package.json index 2ec776ae0b..dc40382ebd 100644 --- a/services/github/model-github/package.json +++ b/services/github/model-github/package.json @@ -18,19 +18,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/contact": "workspace:^0.7.0", diff --git a/services/github/model-github/src/index.ts b/services/github/model-github/src/index.ts index 8497814144..e6d0ed3b10 100644 --- a/services/github/model-github/src/index.ts +++ b/services/github/model-github/src/index.ts @@ -106,78 +106,78 @@ export class TDocSyncInfo extends TDoc implements DocSyncInfo { @Prop(TypeNumber(), getEmbeddedLabel('Github number')) @ReadOnly() @Index(IndexKind.Indexed) - githubNumber!: number + githubNumber!: number @Prop(TypeString(), getEmbeddedLabel('URL')) @ReadOnly() @Index(IndexKind.Indexed) - url!: string + url!: string @Prop(TypeString(), getEmbeddedLabel('Parent URL')) @ReadOnly() @Index(IndexKind.Indexed) - parent!: string + parent!: string @Prop(TypeNumber(), getEmbeddedLabel('ID')) @ReadOnly() - id!: number + id!: number @Prop(TypeString(), getEmbeddedLabel('ObjectClass')) @ReadOnly() @Index(IndexKind.Indexed) - objectClass!: Ref> + objectClass!: Ref> external!: Record @Prop(TypeString(), getEmbeddedLabel('Sync request')) @ReadOnly() @Index(IndexKind.Indexed) - needSync!: string + needSync!: string @Prop(TypeString(), getEmbeddedLabel('External Sync request')) @ReadOnly() @Index(IndexKind.Indexed) - externalVersion!: string + externalVersion!: string @Prop(TypeString(), getEmbeddedLabel('Derived request')) @ReadOnly() @Index(IndexKind.Indexed) - derivedVersion!: string + derivedVersion!: string @Prop(TypeRef(github.class.GithubIntegrationRepository), getEmbeddedLabel('Repository')) @ReadOnly() @Index(IndexKind.Indexed) - repository!: Ref | null + repository!: Ref | null @Prop(TypeString(), getEmbeddedLabel('Deleted flag')) @ReadOnly() @Index(IndexKind.Indexed) - deleted!: boolean + deleted!: boolean } @Model(github.class.GithubUserInfo, core.class.Doc, DOMAIN_GITHUB_USER) export class TGithubUserInfo extends TDoc implements GithubUserInfo { @Prop(TypeString(), getEmbeddedLabel('ID')) @ReadOnly() - id!: string + id!: string @Prop(TypeString(), getEmbeddedLabel('login')) @ReadOnly() @Index(IndexKind.Indexed) - login!: string + login!: string @Prop(TypeString(), getEmbeddedLabel('email')) @ReadOnly() @Index(IndexKind.Indexed) - email!: string + email!: string @Prop(TypeString(), getEmbeddedLabel('name')) @ReadOnly() - name!: string + name!: string @Prop(TypeString(), getEmbeddedLabel('avatarUrl')) @ReadOnly() - avatarUrl!: string + avatarUrl!: string } @Model(github.class.GithubIntegration, core.class.Doc, DOMAIN_GITHUB) @@ -190,127 +190,127 @@ export class TGithubIntegration extends TDoc implements GithubIntegration { // Technical details, will be filled by github integration service. @Prop(TypeString(), getEmbeddedLabel('Name')) @ReadOnly() - name!: string // Organization or individual user name + name!: string // Organization or individual user name nodeId!: string @Prop(TypeBoolean(), getEmbeddedLabel('Alive')) @ReadOnly() - alive!: boolean + alive!: boolean @Prop(Collection(github.class.GithubIntegrationRepository), getEmbeddedLabel('Repositories')) @ReadOnly() - repositories!: number + repositories!: number @Prop(TypeBoolean(), getEmbeddedLabel('User Project')) - useProject!: boolean + useProject!: boolean } @Model(github.class.GithubIntegrationRepository, core.class.AttachedDoc, DOMAIN_GITHUB) export class TGithubIntegrationRepository extends TAttachedDoc implements GithubIntegrationRepository { @Prop(TypeString(), getEmbeddedLabel('Name')) @ReadOnly() - name!: string + name!: string @Prop(TypeNumber(), getEmbeddedLabel('Repository ID')) @ReadOnly() - repositoryId!: number + repositoryId!: number @Prop(TypeBoolean(), getEmbeddedLabel('Alive')) @ReadOnly() - enabled!: boolean + enabled!: boolean @Prop(TypeRef(github.mixin.GithubProject), getEmbeddedLabel('Repository')) @ReadOnly() - githubProject!: Ref | null + githubProject!: Ref | null @Prop(TypeNumber(), getEmbeddedLabel('ID')) @ReadOnly() - id?: number + id?: number @Prop(TypeRecord(), getEmbeddedLabel('Owner')) @ReadOnly() - owner?: Data + owner?: Data @Prop(TypeString(), getEmbeddedLabel('URL')) @ReadOnly() - url?: string + url?: string @Prop(TypeString(), getEmbeddedLabel('HTMLURL')) @ReadOnly() - htmlURL?: string + htmlURL?: string @Prop(TypeString(), getEmbeddedLabel('NodeID')) @ReadOnly() - nodeId?: string + nodeId?: string @Prop(TypeString(), getEmbeddedLabel('Description')) @ReadOnly() - description?: string + description?: string @Prop(TypeBoolean(), getEmbeddedLabel('Is Fork')) @ReadOnly() - fork!: boolean + fork!: boolean @Prop(TypeNumber(), getEmbeddedLabel('Forks')) @ReadOnly() - forks!: number + forks!: number @Prop(TypeBoolean(), getEmbeddedLabel('Private')) @ReadOnly() - private!: boolean + private!: boolean @Prop(TypeNumber(), getEmbeddedLabel('Stars')) @ReadOnly() - stargazers!: number + stargazers!: number @Prop(TypeBoolean(), getEmbeddedLabel('Has Issues')) @ReadOnly() - hasIssues!: boolean + hasIssues!: boolean @Prop(TypeBoolean(), getEmbeddedLabel('Has Projects')) @ReadOnly() - hasProjects!: boolean + hasProjects!: boolean @Prop(TypeBoolean(), getEmbeddedLabel('Has Downloads')) @ReadOnly() - hasDownloads!: boolean + hasDownloads!: boolean @Prop(TypeBoolean(), getEmbeddedLabel('Has Pages')) @ReadOnly() - hasPages!: boolean + hasPages!: boolean @Prop(TypeBoolean(), getEmbeddedLabel('Has Wiki')) @ReadOnly() - hasWiki!: boolean + hasWiki!: boolean @Prop(TypeBoolean(), getEmbeddedLabel('Has Discussions')) @ReadOnly() - hasDiscussions!: boolean + hasDiscussions!: boolean @Prop(TypeNumber(), getEmbeddedLabel('Open Issues')) @ReadOnly() - openIssues!: number + openIssues!: number @Prop(TypeNumber(), getEmbeddedLabel('Watchers')) @ReadOnly() - watchers!: number + watchers!: number @Prop(TypeBoolean(), getEmbeddedLabel('Archived')) @ReadOnly() - archived!: boolean + archived!: boolean @Prop(TypeNumber(), getEmbeddedLabel('Size')) @ReadOnly() - size!: number + size!: number @Prop(TypeString(), getEmbeddedLabel('Language')) @ReadOnly() - language?: string + language?: string @Prop(TypeString(), getEmbeddedLabel('Visibility')) @ReadOnly() - visibility?: string + visibility?: string } @Model(github.class.GithubAuthentication, core.class.Doc, DOMAIN_PREFERENCE) @@ -359,22 +359,22 @@ export class TGithubProject extends TProject implements GithubProject { @Prop(TypeRef(github.class.GithubIntegration), getEmbeddedLabel('Integration')) @ReadOnly() @Hidden() - integration!: Ref + integration!: Ref @Prop(ArrOf(TypeRef(github.class.GithubIntegrationRepository)), getEmbeddedLabel('Repositories')) @ReadOnly() @Hidden() - repositories!: Ref[] + repositories!: Ref[] @Prop(TypeString(), getEmbeddedLabel('NodeID')) @ReadOnly() @Hidden() - projectNodeId!: string + projectNodeId!: string @Prop(TypeNumber(), getEmbeddedLabel('Number')) @ReadOnly() @Hidden() - projectNumber!: number + projectNumber!: number } @Mixin(github.mixin.GithubIssue, tracker.class.Issue) @@ -384,16 +384,16 @@ export class TGithubIssue extends TIssue implements GithubIssue { @Index(IndexKind.FullText) @ReadOnly() @Hidden() - url!: Hyperlink + url!: Hyperlink @Prop(TypeNumber(), tracker.string.Number) @Index(IndexKind.FullText) @ReadOnly() @Hidden() - githubNumber!: number + githubNumber!: number @Prop(TypeRef(github.class.GithubIntegrationRepository), getEmbeddedLabel('Repository')) - repository!: Ref + repository!: Ref } @Mixin(github.mixin.GithubTodo, time.class.ToDo) @@ -407,7 +407,7 @@ export class TGithubUser extends TPerson implements GithubUser { @Prop(TypeHyperlink(), getEmbeddedLabel('Github URL')) @Index(IndexKind.FullText) @ReadOnly() - url!: Hyperlink + url!: Hyperlink } @Mixin(github.mixin.GithubComponent, tracker.class.Component) @@ -416,19 +416,19 @@ export class TGithubComponent extends TComponent implements GithubComponent { @Prop(TypeRef(github.class.GithubIntegrationRepository), getEmbeddedLabel('Repository')) @ReadOnly() @Hidden() - repository!: Ref + repository!: Ref @Prop(TypeBoolean(), getEmbeddedLabel('Represent')) @ReadOnly() @Hidden() - represent!: boolean + represent!: boolean } @Model(github.class.GithubPullRequest, tracker.class.Issue) @UX(github.string.PullRequest, github.icon.PullRequest, undefined, undefined, undefined, github.string.PullRequests) export class TGithubPullRequest extends TIssue implements GithubPullRequest { @Prop(ArrOf(TypeRef(contact.class.Person)), getEmbeddedLabel('Reviewers')) - reviewers!: Ref[] | null + reviewers!: Ref[] | null @Prop(TypeRef(tracker.class.Project), tracker.string.Project, { icon: tracker.icon.Issues }) @Index(IndexKind.Indexed) @@ -440,35 +440,35 @@ export class TGithubPullRequest extends TIssue implements GithubPullRequest { @Prop(TypeBoolean(), github.string.PRDraft) @ReadOnly() - draft!: boolean + draft!: boolean @Prop(TypeDate(DateRangeMode.DATETIME), github.string.PRMergedAt) @ReadOnly() - mergedAt!: Timestamp | null + mergedAt!: Timestamp | null @Prop(TypeDate(DateRangeMode.DATETIME), github.string.PRClosedAt) @ReadOnly() - closedAt!: Timestamp | null + closedAt!: Timestamp | null @Prop(TypeNumber(), github.string.PRFile) @ReadOnly() @Hidden() - files!: number + files!: number @Prop(TypeNumber(), github.string.PRCommit) @ReadOnly() - commits!: number + commits!: number @Prop(TypeAny(github.component.MergeableValuePresenter, github.string.Mergeable), github.string.Mergeable) @ReadOnly() - mergeable!: PullRequestMergeable + mergeable!: PullRequestMergeable @Prop( TypeAny(github.component.PullRequestStateValuePresenter, github.string.PullRequestMergeState), github.string.PullRequestMergeState ) @ReadOnly() - state!: GithubPullRequestState + state!: GithubPullRequestState @Prop( TypeAny(github.component.PullRequestReviewDecisionValuePresenter, github.string.PullRequestReviewDecision), @@ -476,17 +476,17 @@ export class TGithubPullRequest extends TIssue implements GithubPullRequest { ) @ReadOnly() @Hidden() - reviewDecision!: GithubReviewDecisionState + reviewDecision!: GithubReviewDecisionState latestReviews!: LastReviewState[] @Prop(Collection(github.class.GithubPullRequestReview), github.string.PRReview) @Hidden() - reviews!: number + reviews!: number @Prop(Collection(github.class.GithubReviewComment), getEmbeddedLabel('Review Comments')) @Hidden() - reviewComments!: number + reviewComments!: number } @Model(github.class.GithubPullRequestReview, core.class.AttachedDoc, DOMAIN_GITHUB) @@ -500,14 +500,14 @@ export class TGithubPullRequestReview extends TAttachedDoc implements GithubPull @Model(github.class.GithubReview, activity.class.ActivityMessage) export class TGithubReview extends TActivityMessage implements GithubReview { @Prop(TypeString(), getEmbeddedLabel('State')) - state!: GithubPullRequestReviewState + state!: GithubPullRequestReviewState @Prop(TypeMarkup(), getEmbeddedLabel('Body')) - body!: Markup + body!: Markup @Prop(ArrOf(TypeString()), getEmbeddedLabel('Comment refs')) // Urls of comments - comments!: string[] + comments!: string[] } @Model(github.class.GithubReviewThread, activity.class.ActivityMessage) @@ -535,7 +535,7 @@ export class TGithubReviewComment extends TAttachedDoc implements GithubReviewCo reviewUrl!: string // A review url. @Prop(TypeMarkup(), getEmbeddedLabel('Body')) - body!: Markup + body!: Markup outdated!: boolean diff --git a/services/github/pod-github/.eslintrc.js b/services/github/pod-github/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/github/pod-github/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/github/pod-github/Dockerfile b/services/github/pod-github/Dockerfile index bb0a7d09ab..cc6c81cede 100644 --- a/services/github/pod-github/Dockerfile +++ b/services/github/pod-github/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/github/pod-github/eslint.config.mjs b/services/github/pod-github/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/github/pod-github/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/github/pod-github/package.json b/services/github/pod-github/package.json index f0f8206efe..f48c860603 100644 --- a/services/github/pod-github/package.json +++ b/services/github/pod-github/package.json @@ -33,14 +33,12 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", @@ -51,13 +49,14 @@ "graphql-binding": "^2.5.2", "@types/express": "^4.17.13", "@types/express-fileupload": "^1.1.7", - "@types/uuid": "^8.3.1", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/body-parser": "~1.19.2", "@types/compression": "~1.7.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", @@ -114,7 +113,7 @@ "@tiptap/extension-bubble-menu": "^2.11.7", "@hcengineering/task": "workspace:^0.7.0", "express": "^4.21.2", - "cors": "^2.8.5", + "cors": "^2.8.6", "body-parser": "^1.20.3", "mongodb": "^6.16.0", "@hcengineering/setting": "workspace:^0.7.0", diff --git a/services/github/pod-github/src/client.ts b/services/github/pod-github/src/client.ts index 184ac89290..2e5ffe7c7d 100644 --- a/services/github/pod-github/src/client.ts +++ b/services/github/pod-github/src/client.ts @@ -3,7 +3,7 @@ // // -import client, { ClientSocket } from '@hcengineering/client' +import client from '@hcengineering/client' import clientResources from '@hcengineering/client-resources' import { Client, ClientConnectEvent, systemAccountUuid, WorkspaceUuid, type MeasureContext } from '@hcengineering/core' import { setMetadata } from '@hcengineering/platform' @@ -26,7 +26,7 @@ export async function createPlatformClient ( headers: { 'User-Agent': config.ServiceID } - }) as never as ClientSocket + }) as never }) const token = generateToken(systemAccountUuid, workspace, { service: 'github', mode: 'github' }) diff --git a/services/github/pod-github/src/markdown/__tests__/markup.test.ts b/services/github/pod-github/src/markdown/__tests__/markup.test.ts index 39d162cb99..694df61b7c 100644 --- a/services/github/pod-github/src/markdown/__tests__/markup.test.ts +++ b/services/github/pod-github/src/markdown/__tests__/markup.test.ts @@ -13,7 +13,7 @@ // limitations under the License. // -/* eslint-env jest */ +/* global describe, expect, it */ import { setMetadata } from '@hcengineering/platform' import serverCore from '@hcengineering/server-core' import { jsonToHTML, htmlToJSON } from '@hcengineering/text' @@ -73,7 +73,7 @@ describe('server', () => { const newMarkdown = serializeMessage(json, refUrl, imageUrl) console.log(json, newMarkdown) expect(newMarkdown).toBe( - 'qwe4 qwe6\n\n![](http://localhost76e25453-186d-46e5-b9cd-d296a5342ce2&width=997)qwe 77\n\nzzz2 3' + 'qwe4 qwe6\n\n![](http://localhost76e25453-186d-46e5-b9cd-d296a5342ce2?file=76e25453-186d-46e5-b9cd-d296a5342ce2&width=997)qwe 77\n\nzzz2 3' ) }) it('code block', async () => { diff --git a/services/github/pod-github/src/markdown/__tests__/textmodel.test.ts b/services/github/pod-github/src/markdown/__tests__/textmodel.test.ts index 5f87b733c3..b51f0ec5d4 100644 --- a/services/github/pod-github/src/markdown/__tests__/textmodel.test.ts +++ b/services/github/pod-github/src/markdown/__tests__/textmodel.test.ts @@ -13,7 +13,7 @@ // limitations under the License. // -/* eslint-env jest */ +/* global describe, expect, it */ import { MarkupMarkType, MarkupNode, @@ -869,7 +869,7 @@ A list of closed updated issues` ], type: MarkupNodeType.doc } - expect(() => serializeMessage(node, 'ref://', 'http://')).toThrowError( + expect(() => serializeMessage(node, 'ref://', 'http://')).toThrow( 'Token type `textqwe` not supported by Markdown renderer' ) }) diff --git a/services/github/pod-github/src/platform.ts b/services/github/pod-github/src/platform.ts index 97455c5eb0..40758ebd0e 100644 --- a/services/github/pod-github/src/platform.ts +++ b/services/github/pod-github/src/platform.ts @@ -996,11 +996,11 @@ export class PlatformWorker { const rechecks: string[] = [] let idx = 0 const connecting = new Map< - string, - { - time: number - version: string - } + string, + { + time: number + version: string + } >() const st = Date.now() const connectingInfo = setInterval(() => { diff --git a/services/github/pod-github/src/server.ts b/services/github/pod-github/src/server.ts index 05a0b123bb..ca8d9543e6 100644 --- a/services/github/pod-github/src/server.ts +++ b/services/github/pod-github/src/server.ts @@ -52,7 +52,7 @@ export async function start (ctx: MeasureContext, brandingMap: BrandingMap): Pro const localWebhookUrl = `http://localhost:${port}${path}` // See https://github.com/octokit/webhooks.js/#createnodemiddleware for all options - const middleware = createNodeMiddleware(octokitApp.webhooks as any, { path }) + const middleware = createNodeMiddleware(octokitApp.webhooks, { path }) const app = express() diff --git a/services/github/pod-github/src/sync/__tests__/pullrequests.test.ts b/services/github/pod-github/src/sync/__tests__/pullrequests.test.ts index 25f5ccf3c0..f6fa19896e 100644 --- a/services/github/pod-github/src/sync/__tests__/pullrequests.test.ts +++ b/services/github/pod-github/src/sync/__tests__/pullrequests.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/first */ import { PersonId } from '@hcengineering/core' import { PullRequestExternalData } from '../githubTypes' import type { UserInfo } from '../../types' @@ -20,7 +19,6 @@ jest.mock('../../config', () => ({ })) import { PullRequestSyncManager } from '../pullrequests' -/* eslint-enable import/first */ describe('PullRequestSyncManager', () => { describe('getReviewers', () => { @@ -49,7 +47,7 @@ describe('PullRequestSyncManager', () => { it('should handle undefined reviewRequests gracefully', async () => { const prData: Partial = { - reviewRequests: undefined as any, + reviewRequests: undefined, latestReviews: { nodes: [], totalCount: 0 } } @@ -140,7 +138,7 @@ describe('PullRequestSyncManager', () => { it('should handle undefined latestReviews', async () => { const prData: Partial = { reviewRequests: { nodes: [], totalCount: 0 }, - latestReviews: undefined as any + latestReviews: undefined } const result = await manager.getReviewers(prData as PullRequestExternalData) diff --git a/services/github/pod-github/src/sync/comments.ts b/services/github/pod-github/src/sync/comments.ts index 10e8f506dd..3bac1fa230 100644 --- a/services/github/pod-github/src/sync/comments.ts +++ b/services/github/pod-github/src/sync/comments.ts @@ -63,7 +63,7 @@ export class CommentSyncManager implements DocSyncManager { eventSync = new Map>() @withContext('comments-handle-event') - async handleEvent( + async handleEvent ( ctx: MeasureContext, integration: IntegrationContainer, derivedClient: TxOperations, @@ -459,7 +459,7 @@ export class CommentSyncManager implements DocSyncManager { const upd: DocumentUpdate = { parent: (result?.data.html_url?.split('#')?.[0] ?? '').toLowerCase(), url: (result?.data.url ?? '').toLowerCase(), - external: result?.data as CommentExternalData, + external: result?.data, current: result?.data, repository: repo._id, needSync: githubSyncVersion diff --git a/services/github/pod-github/src/sync/issueBase.ts b/services/github/pod-github/src/sync/issueBase.ts index ff181599b6..878b1b06f1 100644 --- a/services/github/pod-github/src/sync/issueBase.ts +++ b/services/github/pod-github/src/sync/issueBase.ts @@ -51,33 +51,33 @@ export type WithMarkup = Omit & { * @public */ export type GithubIssueData = Omit< -WithMarkup, -| 'commits' -| 'attachments' -| 'commits' -| 'number' -| 'files' -| 'space' -| 'identifier' -| 'rank' -| 'status' -| 'priority' -| 'subIssues' -| 'parents' -| 'estimation' -| 'reportedTime' -| 'reports' -| 'childInfo' -| 'dueDate' -| 'startDate' -| 'kind' -| 'reviews' -| 'reviewThreads' -| 'reviewComments' -| 'component' -| keyof AttachedDoc + WithMarkup, + | 'commits' + | 'attachments' + | 'commits' + | 'number' + | 'files' + | 'space' + | 'identifier' + | 'rank' + | 'status' + | 'priority' + | 'subIssues' + | 'parents' + | 'estimation' + | 'reportedTime' + | 'reports' + | 'childInfo' + | 'dueDate' + | 'startDate' + | 'kind' + | 'reviews' + | 'reviewThreads' + | 'reviewComments' + | 'component' + | keyof AttachedDoc > & -Record + Record /** * @public @@ -233,7 +233,7 @@ export abstract class IssueSyncManagerBase { } } - abstract fillBackChanges (update: DocumentUpdate, existing: GithubIssue, external: any): Promise + abstract fillBackChanges(update: DocumentUpdate, existing: GithubIssue, external: any): Promise async addConnectToMessage ( msg: IntlString, @@ -259,7 +259,7 @@ export abstract class IssueSyncManagerBase { await stripGuestLink(data) } - abstract performIssueFieldsUpdate ( + abstract performIssueFieldsUpdate( ctx: MeasureContext, info: DocSyncInfo, existing: WithMarkup, @@ -271,7 +271,7 @@ export abstract class IssueSyncManagerBase { account: PersonId ): Promise - abstract afterSync ( + abstract afterSync( ctx: MeasureContext, existing: Issue, account: PersonId, @@ -297,7 +297,7 @@ export abstract class IssueSyncManagerBase { {}, async (ctx) => { await this.client.createMixin( - existing._id as Ref, + existing._id, existing._class, existing.space, github.mixin.GithubIssue, @@ -687,7 +687,7 @@ export abstract class IssueSyncManagerBase { this.provider.sync() } - abstract deleteGithubDocument ( + abstract deleteGithubDocument( ctx: MeasureContext, container: ContainerFocus, account: PersonId, diff --git a/services/github/pod-github/src/sync/issues.ts b/services/github/pod-github/src/sync/issues.ts index 07d7b2cea9..4a05bbe342 100644 --- a/services/github/pod-github/src/sync/issues.ts +++ b/services/github/pod-github/src/sync/issues.ts @@ -66,7 +66,7 @@ export class IssueSyncManager extends IssueSyncManagerBase implements DocSyncMan } @withContext('issues-handleEvent') - async handleEvent( + async handleEvent ( ctx: MeasureContext, integration: IntegrationContainer, derivedClient: TxOperations, @@ -777,12 +777,12 @@ export class IssueSyncManager extends IssueSyncManagerBase implements DocSyncMan const body = (await this.provider.getMarkdown(existingIssue.description)) ?? '' if (isGHWriteAllowed()) { const response: - | { - createIssue: { - issue: IssueExternalData - } - } - | undefined = await okit.graphql(q, { + | { + createIssue: { + issue: IssueExternalData + } + } + | undefined = await okit.graphql(q, { repo: repoId, title: existingIssue.title, body, diff --git a/services/github/pod-github/src/sync/pullrequests.ts b/services/github/pod-github/src/sync/pullrequests.ts index ebc6e9054d..3062dea185 100644 --- a/services/github/pod-github/src/sync/pullrequests.ts +++ b/services/github/pod-github/src/sync/pullrequests.ts @@ -73,7 +73,7 @@ import { } from './utils' type GithubPullRequestData = GithubIssueData & -Omit + Omit type GithubPullRequestUpdate = DocumentUpdate> @@ -81,7 +81,7 @@ export class PullRequestSyncManager extends IssueSyncManagerBase implements DocS externalDerivedSync = true @withContext('pullrequests-handleEvent') - async handleEvent( + async handleEvent ( ctx: MeasureContext, integration: IntegrationContainer, derivedClient: TxOperations, @@ -479,7 +479,7 @@ export class PullRequestSyncManager extends IssueSyncManagerBase implements DocS accountGH, { ...pullRequestData, - status: (await guessStatus(pullRequestExternal, statuses))._id as Ref + status: (await guessStatus(pullRequestExternal, statuses))._id }, pullRequestExternal, info.repository as Ref, @@ -611,8 +611,8 @@ export class PullRequestSyncManager extends IssueSyncManagerBase implements DocS ctx: MeasureContext, client: TxOperations, pullRequest: Pick< - GithubPullRequest, - '_id' | 'identifier' | 'reviewers' | 'title' | 'state' | 'space' | '_class' | 'modifiedBy' + GithubPullRequest, + '_id' | 'identifier' | 'reviewers' | 'title' | 'state' | 'space' | '_class' | 'modifiedBy' >, external: PullRequestExternalData, info: DocSyncInfo, @@ -849,8 +849,8 @@ export class PullRequestSyncManager extends IssueSyncManagerBase implements DocS private async requestFix ( client: TxOperations, pullRequest: Pick< - GithubPullRequest, - '_id' | 'identifier' | 'reviewers' | 'title' | 'space' | 'state' | 'space' | '_class' + GithubPullRequest, + '_id' | 'identifier' | 'reviewers' | 'title' | 'space' | 'state' | 'space' | '_class' >, external: PullRequestExternalData, todoUser: Ref, @@ -917,8 +917,7 @@ export class PullRequestSyncManager extends IssueSyncManagerBase implements DocS // We need to update status in case category are different const stInstance = - statuses.find((it) => it._id === status) ?? - ((await this.client.findOne(core.class.Status, { _id: status })) as Status) + statuses.find((it) => it._id === status) ?? (await this.client.findOne(core.class.Status, { _id: status })) let gs: IssueStatus | undefined if (pullRequestExternal.merged) { @@ -926,7 +925,7 @@ export class PullRequestSyncManager extends IssueSyncManagerBase implements DocS } // If PR is merged or closed, we need to update platform issue status - if (gs !== undefined && stInstance.category !== gs.category) { + if (gs !== undefined && stInstance?.category !== gs.category) { update.status = gs._id } } diff --git a/services/github/pod-github/src/sync/repository.ts b/services/github/pod-github/src/sync/repository.ts index 352ebbe071..1b472f136b 100644 --- a/services/github/pod-github/src/sync/repository.ts +++ b/services/github/pod-github/src/sync/repository.ts @@ -117,7 +117,7 @@ export class RepositorySyncMapper implements DocSyncManager { } @withContext('repository-handleEvent') - async handleEvent( + async handleEvent ( ctx: MeasureContext, integration: IntegrationContainer, derivedClient: TxOperations, @@ -291,8 +291,8 @@ export class RepositorySyncMapper implements DocSyncManager { let allRepos: GithubIntegrationRepository[] = [...allRepositories] const githubRepos: - | Repository - | Endpoints['GET /installation/repositories']['response']['data']['repositories'][0][] = [] + | Repository + | Endpoints['GET /installation/repositories']['response']['data']['repositories'][0][] = [] for await (const { repository } of iterable) { githubRepos.push(repository) } diff --git a/services/github/pod-github/src/sync/reviewComments.ts b/services/github/pod-github/src/sync/reviewComments.ts index d4214d6cf6..56afcd03b5 100644 --- a/services/github/pod-github/src/sync/reviewComments.ts +++ b/services/github/pod-github/src/sync/reviewComments.ts @@ -56,7 +56,7 @@ export class ReviewCommentSyncManager implements DocSyncManager { eventSync = new Map>() @withContext('review-comments-handleEvent') - async handleEvent( + async handleEvent ( ctx: MeasureContext, integration: IntegrationContainer, derivedClient: TxOperations, @@ -536,12 +536,12 @@ export class ReviewCommentSyncManager implements DocSyncManager { if (isGHWriteAllowed()) { const response: - | { - addPullRequestReviewThreadReply: { - comment: ReviewCommentExternalData - } - } - | undefined = await okit.graphql(q, { + | { + addPullRequestReviewThreadReply: { + comment: ReviewCommentExternalData + } + } + | undefined = await okit.graphql(q, { prID: existingReview.reviewThreadId, body: (await this.provider.getMarkdown(existingReview.body)) ?? '' }) diff --git a/services/github/pod-github/src/sync/reviewThreads.ts b/services/github/pod-github/src/sync/reviewThreads.ts index bd65b0ec32..07a73e0929 100644 --- a/services/github/pod-github/src/sync/reviewThreads.ts +++ b/services/github/pod-github/src/sync/reviewThreads.ts @@ -51,20 +51,20 @@ import config from '../config' import { githubConfiguration } from './configuration' export type ReviewThreadData = Pick< -GithubReviewThread, -| 'threadId' -| 'line' -| 'diffSide' -| 'startLine' -| 'isCollapsed' -| 'isPinned' -| 'isResolved' -| 'isOutdated' -| 'path' -| 'originalLine' -| 'originalStartLine' -| 'resolvedBy' -| 'startDiffSide' + GithubReviewThread, + | 'threadId' + | 'line' + | 'diffSide' + | 'startLine' + | 'isCollapsed' + | 'isPinned' + | 'isResolved' + | 'isOutdated' + | 'path' + | 'originalLine' + | 'originalStartLine' + | 'resolvedBy' + | 'startDiffSide' > export class ReviewThreadSyncManager implements DocSyncManager { @@ -86,7 +86,7 @@ export class ReviewThreadSyncManager implements DocSyncManager { eventSync = new Map>() @withContext('review-threads-handleEvent') - async handleEvent( + async handleEvent ( ctx: MeasureContext, integration: IntegrationContainer, derivedClient: TxOperations, @@ -483,12 +483,12 @@ export class ReviewThreadSyncManager implements DocSyncManager { if (isGHWriteAllowed()) { const response: - | { - addPullRequestReviewThread: { - thread: ReviewThreadExternalData - } - } - | undefined = await okit.graphql(q, { + | { + addPullRequestReviewThread: { + thread: ReviewThreadExternalData + } + } + | undefined = await okit.graphql(q, { prID: (parent.external as PullRequestExternalData).id, body: EmptyMarkup // TODO: Need to replace with first comment on comment sync. }) diff --git a/services/github/pod-github/src/sync/reviews.ts b/services/github/pod-github/src/sync/reviews.ts index 0519d46145..6a7f74da4e 100644 --- a/services/github/pod-github/src/sync/reviews.ts +++ b/services/github/pod-github/src/sync/reviews.ts @@ -56,7 +56,7 @@ export class ReviewSyncManager implements DocSyncManager { eventSync = new Map>() @withContext('reviews-handleEvent') - async handleEvent( + async handleEvent ( ctx: MeasureContext, integration: IntegrationContainer, derivedClient: TxOperations, @@ -457,12 +457,12 @@ export class ReviewSyncManager implements DocSyncManager { if (isGHWriteAllowed()) { const response: - | { - addPullRequestReview: { - pullRequestReview: ReviewExternalData - } - } - | undefined = await okit.graphql(q, { + | { + addPullRequestReview: { + pullRequestReview: ReviewExternalData + } + } + | undefined = await okit.graphql(q, { prID: (parent.external as PullRequestExternalData).id, body: (await this.provider.getMarkdown(existingReview.body)) ?? '', state: existingReview.state diff --git a/services/github/pod-github/src/sync/users.ts b/services/github/pod-github/src/sync/users.ts index f49f18e0e3..bf9b4346b9 100644 --- a/services/github/pod-github/src/sync/users.ts +++ b/services/github/pod-github/src/sync/users.ts @@ -40,7 +40,7 @@ export class UsersSyncManager implements DocSyncManager { return false } - async handleEvent( + async handleEvent ( ctx: MeasureContext, integration: IntegrationContainer, derivedClient: TxOperations, diff --git a/services/github/pod-github/src/sync/utils.ts b/services/github/pod-github/src/sync/utils.ts index 5667a6c9d9..f5ce57d827 100644 --- a/services/github/pod-github/src/sync/utils.ts +++ b/services/github/pod-github/src/sync/utils.ts @@ -215,7 +215,7 @@ export async function guessStatus ( export class SyncRunner { eventSync = new Map>() - async exec(id: string, op: () => Promise): Promise { + async exec (id: string, op: () => Promise): Promise { await this.eventSync.get(id) const promise = op() this.eventSync.set( diff --git a/services/github/pod-github/src/worker.ts b/services/github/pod-github/src/worker.ts index 530f0d35b0..6ce8bb7690 100644 --- a/services/github/pod-github/src/worker.ts +++ b/services/github/pod-github/src/worker.ts @@ -146,7 +146,7 @@ export class GithubWorker implements IntegrationManager { this.closing = true this.ctx.warn('Closing', { workspace: this.workspace }) this.triggerSync() - await Promise.all([await this.syncPromise, new Promise((resolve) => setTimeout(resolve, 5000))]) + await Promise.all([this.syncPromise, new Promise((resolve) => setTimeout(resolve, 5000))]) this.ctx.warn('Closing Done', { workspace: this.workspace }) await this.client.close() @@ -202,19 +202,19 @@ export class GithubWorker implements IntegrationManager { return compatible ? markup : jsonToMarkup({ - type: MarkupNodeType.doc, - content: [ - { - type: MarkupNodeType.markdown, - content: [ - { - type: MarkupNodeType.text, - text - } - ] - } - ] - }) + type: MarkupNodeType.doc, + content: [ + { + type: MarkupNodeType.markdown, + content: [ + { + type: MarkupNodeType.text, + text + } + ] + } + ] + }) } async getMarkup ( @@ -1434,8 +1434,8 @@ export class GithubWorker implements IntegrationManager { const docsMap = new Map, Doc>(externalDocs.map((it) => [it._id as Ref, it])) const orderedSyncInfo = [...syncInfo] orderedSyncInfo.sort((a, b) => { - const adoc = docsMap.get(a._id as Ref) - const bdoc = docsMap.get(a._id as Ref) + const adoc = docsMap.get(a._id) + const bdoc = docsMap.get(a._id) return (bdoc?.createdOn ?? 0) - (adoc?.createdOn ?? 0) }) @@ -1724,7 +1724,7 @@ export class GithubWorker implements IntegrationManager { } } - async handleEvent( + async handleEvent ( ctx: MeasureContext, requestClass: Ref>, integrationId: number | undefined, diff --git a/services/github/server-github-model/.eslintrc.js b/services/github/server-github-model/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/services/github/server-github-model/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/github/server-github-model/eslint.config.mjs b/services/github/server-github-model/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/services/github/server-github-model/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/services/github/server-github-model/package.json b/services/github/server-github-model/package.json index 2bf4d155fe..f58c118dc9 100644 --- a/services/github/server-github-model/package.json +++ b/services/github/server-github-model/package.json @@ -18,19 +18,19 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", "@types/node": "^24.13.3", - "jest": "^29.7.0", - "@types/jest": "^29.5.5", - "ts-jest": "^29.1.1" + "jest": "^30.4.2", + "@types/jest": "^30.0.0", + "ts-jest": "^29.4.12", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/services/github/server-github-resources/.eslintrc.js b/services/github/server-github-resources/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/github/server-github-resources/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/github/server-github-resources/eslint.config.mjs b/services/github/server-github-resources/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/github/server-github-resources/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/github/server-github-resources/package.json b/services/github/server-github-resources/package.json index be83cce9f8..9559620543 100644 --- a/services/github/server-github-resources/package.json +++ b/services/github/server-github-resources/package.json @@ -22,18 +22,18 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/chunter": "workspace:^0.7.0", diff --git a/services/github/server-github/.eslintrc.js b/services/github/server-github/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/github/server-github/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/github/server-github/eslint.config.mjs b/services/github/server-github/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/github/server-github/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/github/server-github/package.json b/services/github/server-github/package.json index 3be540c6c2..7422211fb3 100644 --- a/services/github/server-github/package.json +++ b/services/github/server-github/package.json @@ -23,18 +23,18 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/core": "workspace:^0.7.26", diff --git a/services/gmail/pod-gmail/.eslintrc.js b/services/gmail/pod-gmail/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/gmail/pod-gmail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/gmail/pod-gmail/Dockerfile b/services/gmail/pod-gmail/Dockerfile index 86a8177268..b18c937039 100644 --- a/services/gmail/pod-gmail/Dockerfile +++ b/services/gmail/pod-gmail/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/gmail/pod-gmail/eslint.config.mjs b/services/gmail/pod-gmail/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/gmail/pod-gmail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/gmail/pod-gmail/package.json b/services/gmail/pod-gmail/package.json index 966d20a604..b3f941578a 100644 --- a/services/gmail/pod-gmail/package.json +++ b/services/gmail/pod-gmail/package.json @@ -32,29 +32,27 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/node": "^24.13.3", - "@types/sanitize-html": "^2.15.0", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@types/sanitize-html": "^2.16.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "@types/ws": "^8.18.1", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node-dev": "^2.0.0", "typescript": "^5.9.3", - "@types/uuid": "^8.3.1", "ts-node": "^10.9.2", - "cross-env": "~7.0.3" + "cross-env": "~7.0.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", @@ -79,7 +77,7 @@ "@hcengineering/server-token": "workspace:^0.7.18", "@hcengineering/integration-client": "workspace:^0.7.0", "@hcengineering/kafka": "workspace:^0.7.18", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "fast-equals": "^5.2.2", @@ -88,9 +86,9 @@ "google-auth-library": "^8.0.2", "gaxios": "^5.0.1", "jwt-simple": "^0.5.6", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "ws": "^8.21.0", "@hcengineering/analytics-service": "workspace:^0.7.19", - "sanitize-html": "^2.15.0" + "sanitize-html": "2.17.5" } } diff --git a/services/gmail/pod-gmail/src/__tests__/sync.test.ts b/services/gmail/pod-gmail/src/__tests__/sync.test.ts index a4c75532d0..9adc7497db 100644 --- a/services/gmail/pod-gmail/src/__tests__/sync.test.ts +++ b/services/gmail/pod-gmail/src/__tests__/sync.test.ts @@ -114,7 +114,7 @@ describe('SyncManager', () => { mockMessageManager, mockGmail, workspace, - mockKeyValueClient as any, + mockKeyValueClient, new RateLimiter(100, 100) ) }) diff --git a/services/gmail/pod-gmail/src/config.ts b/services/gmail/pod-gmail/src/config.ts index ebdf9ff17f..94f1a55d5c 100644 --- a/services/gmail/pod-gmail/src/config.ts +++ b/services/gmail/pod-gmail/src/config.ts @@ -61,7 +61,7 @@ const config: Config = (() => { const versionStr = process.env[envMap.Version] ?? 'v1' let version: IntegrationVersion if (versionStr === IntegrationVersion.V1 || versionStr === IntegrationVersion.V2) { - version = versionStr as IntegrationVersion + version = versionStr } else { throw new Error(`Invalid version: ${versionStr}. Must be 'v1' or 'v2'.`) } diff --git a/services/gmail/pod-gmail/src/gmail.ts b/services/gmail/pod-gmail/src/gmail.ts index 2c9a9e8313..3d6e795044 100644 --- a/services/gmail/pod-gmail/src/gmail.ts +++ b/services/gmail/pod-gmail/src/gmail.ts @@ -335,7 +335,7 @@ export class GmailClient { }) await this.workspace.subscribeMessages() for (const message of newMessages) { - await this.createMessage(message as NewMessage) + await this.createMessage(message) } } diff --git a/services/gmail/pod-gmail/src/gmailController.ts b/services/gmail/pod-gmail/src/gmailController.ts index 30457bdbdc..234f189ea7 100644 --- a/services/gmail/pod-gmail/src/gmailController.ts +++ b/services/gmail/pod-gmail/src/gmailController.ts @@ -56,8 +56,8 @@ export class GmailController { private readonly credentials: ProjectCredentials private readonly clients: Map> = new Map< - PersonId, - Map + PersonId, + Map >() private readonly personIdByEmail = new Map() diff --git a/services/gmail/pod-gmail/src/main.ts b/services/gmail/pod-gmail/src/main.ts index 8bff7a73de..421afb7af9 100644 --- a/services/gmail/pod-gmail/src/main.ts +++ b/services/gmail/pod-gmail/src/main.ts @@ -112,9 +112,10 @@ export const main = async (): Promise => { try { ctx.info('Signin code request received') const code = req.query.code as string - state = JSON.parse(decode64(req.query.state as string)) as unknown as State - await gmailController.createClient(state, code) - res.redirect(state.redirectURL) + const parsedState: State = JSON.parse(decode64(req.query.state as string)) + state = parsedState + await gmailController.createClient(parsedState, code) + res.redirect(parsedState.redirectURL) } catch (err: any) { ctx.error('Failed to process signin code', { message: err.message }) if (state !== undefined) { diff --git a/services/love/.eslintrc.js b/services/love/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/love/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/love/Dockerfile b/services/love/Dockerfile index 017ad4884e..ec46de5ee2 100644 --- a/services/love/Dockerfile +++ b/services/love/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/love/eslint.config.mjs b/services/love/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/love/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/love/package.json b/services/love/package.json index 5e383a2cf5..d2f6130ea3 100644 --- a/services/love/package.json +++ b/services/love/package.json @@ -30,26 +30,24 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@tsconfig/node16": "^1.0.4", "cross-env": "~7.0.3", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/uuid": "^8.3.1", - "@typescript-eslint/parser": "^6.21.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3" @@ -75,12 +73,12 @@ "@hcengineering/server-core": "workspace:^0.7.19", "@hcengineering/server-storage": "workspace:^0.7.16", "@hcengineering/server-token": "workspace:^0.7.18", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "jwt-simple": "^0.5.6", "livekit-server-sdk": "^2.13.3", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "ws": "^8.21.0" } } diff --git a/services/love/src/workspaceClient.ts b/services/love/src/workspaceClient.ts index a8ce68395e..d4cf530806 100644 --- a/services/love/src/workspaceClient.ts +++ b/services/love/src/workspaceClient.ts @@ -436,9 +436,9 @@ export class WorkspaceClient { const place = roomDoc !== undefined ? getFreeRoomPlace(roomDoc, participants, person, { - x: participantMetadata.x ?? 0, - y: participantMetadata.y ?? 0 - }) + x: participantMetadata.x ?? 0, + y: participantMetadata.y ?? 0 + }) : { x: 0, y: 0 } const oid = generateId() @@ -527,7 +527,7 @@ export class WorkspaceClient { try { const socialIds = await this.client.findAll(contact.class.SocialIdentity, { attachedTo: personRef }, { limit: 1 }) if (socialIds.length > 0) { - return socialIds[0]._id as PersonId + return socialIds[0]._id } } catch (err: any) { this.ctx.error('[WorkspaceClient.getPersonIdByPersonRef] Failed', { diff --git a/services/mail/mail-common/.eslintrc.js b/services/mail/mail-common/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/mail/mail-common/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/mail/mail-common/eslint.config.mjs b/services/mail/mail-common/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/mail/mail-common/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/mail/mail-common/package.json b/services/mail/mail-common/package.json index 1df419c31c..4419554f97 100644 --- a/services/mail/mail-common/package.json +++ b/services/mail/mail-common/package.json @@ -21,27 +21,25 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", "@types/express": "^4.17.13", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/markdown-it": "~13.0.0", "@types/node": "^24.13.3", - "@types/sanitize-html": "^2.15.0", + "@types/sanitize-html": "^2.16.1", "@types/turndown": "^5.0.5", - "@types/uuid": "^8.3.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "typescript": "^5.9.3" }, @@ -61,12 +59,12 @@ "@hcengineering/mail": "workspace:^0.7.0", "@hcengineering/server-core": "workspace:^0.7.19", "@hcengineering/server-storage": "workspace:^0.7.16", - "image-size": "^1.2.1", + "image-size": "^2.0.4", "kafkajs": "^2.2.4", "markdown-it": "^14.0.0", - "sanitize-html": "^2.15.0", + "sanitize-html": "2.17.5", "turndown": "^7.2.0", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "striptags": "^3.2.0" } } diff --git a/services/mail/mail-common/src/__tests__/thread.test.ts b/services/mail/mail-common/src/__tests__/thread.test.ts index 70374e0f21..15c45c8183 100644 --- a/services/mail/mail-common/src/__tests__/thread.test.ts +++ b/services/mail/mail-common/src/__tests__/thread.test.ts @@ -48,7 +48,7 @@ describe('ThreadLookupService', () => { setValue: jest.fn(), deleteKey: jest.fn(), listKeys: jest.fn() - } as unknown as jest.Mocked + } }) afterEach(() => { diff --git a/services/mail/mail-common/src/utils.ts b/services/mail/mail-common/src/utils.ts index 97c8cacf50..f72fee25d3 100644 --- a/services/mail/mail-common/src/utils.ts +++ b/services/mail/mail-common/src/utils.ts @@ -30,6 +30,7 @@ import { MessageExtra, MessageID } from '@hcengineering/communication-types' import { CreateMessageEvent } from '@hcengineering/communication-sdk-types' import { generateMessageId } from '@hcengineering/communication-shared' +// eslint-disable-next-line secure-coding/no-redos-vulnerable-regex -- applied to short email header values const NAME_EMAIL_PATTERN = /^(?:"?([^"<]+)"?\s*)?<([^>]+)>$/ const NAME_SEGMENT_REGEX = /[\s,;]+/ diff --git a/services/mail/pod-mail-worker/.eslintrc.js b/services/mail/pod-mail-worker/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/mail/pod-mail-worker/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/mail/pod-mail-worker/Dockerfile b/services/mail/pod-mail-worker/Dockerfile index 679d624232..4d7851bf58 100644 --- a/services/mail/pod-mail-worker/Dockerfile +++ b/services/mail/pod-mail-worker/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/mail/pod-mail-worker/eslint.config.mjs b/services/mail/pod-mail-worker/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/mail/pod-mail-worker/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/mail/pod-mail-worker/package.json b/services/mail/pod-mail-worker/package.json index 452dcbedb9..c1946e8870 100644 --- a/services/mail/pod-mail-worker/package.json +++ b/services/mail/pod-mail-worker/package.json @@ -31,28 +31,26 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", "@types/turndown": "^5.0.5", - "@types/sanitize-html": "^2.15.0", - "@types/uuid": "^8.3.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@types/sanitize-html": "^2.16.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "cross-env": "~7.0.3", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "typescript": "^5.9.3" }, @@ -75,13 +73,13 @@ "@hcengineering/server-core": "workspace:^0.7.19", "@hcengineering/server-storage": "workspace:^0.7.16", "@hcengineering/server-token": "workspace:^0.7.18", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "eml-parse-js": "^1.2.0-beta.0", "express": "^4.21.2", "lru-cache": "^11.1.0", - "sanitize-html": "^2.15.0", + "sanitize-html": "2.17.5", "turndown": "^7.2.0", - "uuid": "^8.3.2" + "uuid": "^11.1.1" } } diff --git a/services/mail/pod-mail-worker/src/__tests__/utils.test.ts b/services/mail/pod-mail-worker/src/__tests__/utils.test.ts index deacb9fc83..42e3e38636 100644 --- a/services/mail/pod-mail-worker/src/__tests__/utils.test.ts +++ b/services/mail/pod-mail-worker/src/__tests__/utils.test.ts @@ -92,7 +92,7 @@ describe('utils.ts', () => { headers: [['Content-Type', 'text/html; charset=utf-8']], contents: '

This is an HTML email

' } - } as any + } // Mock readEml to return HTML content ;(readEml as jest.Mock).mockImplementation((content, callback) => { @@ -125,7 +125,7 @@ describe('utils.ts', () => { contents: '--boundary\r\nContent-Type: text/plain\r\n\r\nText part\r\n--boundary\r\nContent-Type: text/html\r\n\r\n

HTML part

\r\n--boundary--' } - } as any + } // Mock readEml to return both text and HTML content ;(readEml as jest.Mock).mockImplementation((content, callback) => { diff --git a/services/mail/pod-mail-worker/src/handlerMta.ts b/services/mail/pod-mail-worker/src/handlerMta.ts index d1e70a2b61..e2a55faa79 100644 --- a/services/mail/pod-mail-worker/src/handlerMta.ts +++ b/services/mail/pod-mail-worker/src/handlerMta.ts @@ -133,6 +133,7 @@ function extractContactName ( email: string ): { firstName: string, lastName: string } { // Match name part that appears before an email in angle brackets + // eslint-disable-next-line secure-coding/no-redos-vulnerable-regex -- applied to short From header values const nameMatch = fromHeader.match(/^\s*"?([^"<]+?)"?\s*<.+?>/) const encodedName = nameMatch?.[1].trim() ?? '' const name = encodedName.length > 0 ? decodeEncodedWords(ctx, encodedName) : '' diff --git a/services/mail/pod-mail/.eslintrc.js b/services/mail/pod-mail/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/mail/pod-mail/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/mail/pod-mail/Dockerfile b/services/mail/pod-mail/Dockerfile index e5f10e58c5..12790bcdcf 100644 --- a/services/mail/pod-mail/Dockerfile +++ b/services/mail/pod-mail/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/mail/pod-mail/eslint.config.mjs b/services/mail/pod-mail/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/mail/pod-mail/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/mail/pod-mail/package.json b/services/mail/pod-mail/package.json index 1e68568bc7..24bf51dbaf 100644 --- a/services/mail/pod-mail/package.json +++ b/services/mail/pod-mail/package.json @@ -30,39 +30,38 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", "prettier": "^3.6.2", "ts-node": "^10.9.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", - "eslint-plugin-node": "^11.1.0", + "@types/nodemailer": "^8.0.1", "typescript": "^5.9.3" }, "dependencies": { - "@aws-sdk/client-ses": "^3.1107.0", - "@types/nodemailer": "^6.4.17", + "@aws-sdk/client-sesv2": "^3.1121.0", "@hcengineering/analytics": "workspace:^0.7.19", "@hcengineering/analytics-service": "workspace:^0.7.19", "@hcengineering/core": "workspace:^0.7.26", "@hcengineering/server-core": "workspace:^0.7.19", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "lru-cache": "^11.1.0", - "nodemailer": "^6.10.0" + "nodemailer": "^9.1.1" } } diff --git a/services/mail/pod-mail/src/transport.ts b/services/mail/pod-mail/src/transport.ts index 40c0815503..88d96e3339 100644 --- a/services/mail/pod-mail/src/transport.ts +++ b/services/mail/pod-mail/src/transport.ts @@ -13,7 +13,7 @@ // limitations under the License. // import nodemailer, { type Transporter } from 'nodemailer' -import * as aws from '@aws-sdk/client-ses' +import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2' import { type Config, type SmtpConfig, type SesConfig, getTlsSettings } from './config' @@ -39,7 +39,7 @@ function smtp (config: SmtpConfig): Transporter { function ses (config: SesConfig): Transporter { console.log('Using AWS SES config') - const ses = new aws.SES({ + const sesClient = new SESv2Client({ region: config.Region, credentials: { accessKeyId: config.AccessKey, @@ -48,7 +48,7 @@ function ses (config: SesConfig): Transporter { }) return nodemailer.createTransport({ - SES: { ses, aws } + SES: { sesClient, SendEmailCommand } }) } diff --git a/services/mcp/pod-mcp/Dockerfile b/services/mcp/pod-mcp/Dockerfile new file mode 100644 index 0000000000..3311a190f7 --- /dev/null +++ b/services/mcp/pod-mcp/Dockerfile @@ -0,0 +1,7 @@ +FROM tracexapp/base-slim:v20261006 +WORKDIR /usr/src/app + +COPY bundle/bundle.js ./ + +EXPOSE 4020 +CMD [ "node", "bundle.js" ] diff --git a/services/mcp/pod-mcp/eslint.config.mjs b/services/mcp/pod-mcp/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/mcp/pod-mcp/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/notification/pod-events-processor/.eslintrc.js b/services/notification/pod-events-processor/.eslintrc.js deleted file mode 100644 index 6ab3cb53db..0000000000 --- a/services/notification/pod-events-processor/.eslintrc.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} - diff --git a/services/notification/pod-events-processor/Dockerfile b/services/notification/pod-events-processor/Dockerfile index 8743136c15..808f633a1a 100644 --- a/services/notification/pod-events-processor/Dockerfile +++ b/services/notification/pod-events-processor/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/notification/pod-events-processor/eslint.config.mjs b/services/notification/pod-events-processor/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/notification/pod-events-processor/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/notification/pod-events-processor/package.json b/services/notification/pod-events-processor/package.json index 74e14242b7..49eb84ad13 100644 --- a/services/notification/pod-events-processor/package.json +++ b/services/notification/pod-events-processor/package.json @@ -32,22 +32,21 @@ "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@types/jest": "^29.5.5", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@types/jest": "^30.0.0", + "@typescript-eslint/parser": "^8.67.0", "cross-env": "~7.0.3", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/account-client": "workspace:^0.7.25", diff --git a/services/notification/pod-events-processor/src/__tests__/worker.test.ts b/services/notification/pod-events-processor/src/__tests__/worker.test.ts index 79a32c7fd6..f6da3970d7 100644 --- a/services/notification/pod-events-processor/src/__tests__/worker.test.ts +++ b/services/notification/pod-events-processor/src/__tests__/worker.test.ts @@ -70,7 +70,7 @@ describe('handleScheduledNotification', () => { kind: 'eventReminder', id: 'timer-workslot-1', eventId: 'workslot-1' as any, - eventClass: time.class.WorkSlot as any, + eventClass: time.class.WorkSlot, shiftMs: 1000, targetDate: 1_000_000 } @@ -88,7 +88,7 @@ describe('handleScheduledNotification', () => { // -------------------------------------------------------------------------------- it('returns early for non-eventReminder messages (e.g. legacy todoReminder messages)', async () => { const legacy = { ...workSlotMessage, kind: 'todoReminder' as any } - await handleScheduledNotification(ctx, workspaceUuid, legacy as any, control) + await handleScheduledNotification(ctx, workspaceUuid, legacy, control) expect(getClient).not.toHaveBeenCalled() expect(control.heartbeat).not.toHaveBeenCalled() diff --git a/services/notification/pod-events-processor/src/worker.ts b/services/notification/pod-events-processor/src/worker.ts index 4658b96925..19a811f4cb 100644 --- a/services/notification/pod-events-processor/src/worker.ts +++ b/services/notification/pod-events-processor/src/worker.ts @@ -14,7 +14,7 @@ // import calendar from '@hcengineering/calendar' -import contact, { type Person, type PersonSpace } from '@hcengineering/contact' +import contact, { type PersonSpace } from '@hcengineering/contact' import core, { type AccountUuid, type Class, @@ -66,7 +66,7 @@ export async function handleScheduledNotification ( const { client } = bundle await control.heartbeat() - const event = (await client.findOne(msg.eventClass, { _id: msg.eventId })) as MinimalEvent | undefined + const event = await client.findOne(msg.eventClass, { _id: msg.eventId }) if (event === undefined) return await control.heartbeat() @@ -183,8 +183,8 @@ async function resolveReminderTarget ( const isToDoBacked = event.attachedToClass != null && hierarchy.isDerived(event.attachedToClass, time.class.ToDo) if (isToDoBacked && event.attachedTo != null && event.attachedToClass != null) { - const todo = (await client.findOne(event.attachedToClass as Ref>, { - _id: event.attachedTo as Ref + const todo = (await client.findOne(event.attachedToClass, { + _id: event.attachedTo })) as ToDo | undefined if (todo === undefined) return undefined if (todo.doneOn != null) return undefined @@ -215,11 +215,7 @@ async function resolveReminderTarget ( const person = await client.findOne(contact.class.Person, { personUuid }, { projection: { _id: 1 } }) if (person === undefined) return undefined - const space = await client.findOne( - contact.class.PersonSpace, - { person: person._id as Ref }, - { projection: { _id: 1 } } - ) + const space = await client.findOne(contact.class.PersonSpace, { person: person._id }, { projection: { _id: 1 } }) if (space === undefined) return undefined return { diff --git a/services/notification/pod-notification/.eslintrc.js b/services/notification/pod-notification/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/notification/pod-notification/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/notification/pod-notification/Dockerfile b/services/notification/pod-notification/Dockerfile index f8d53f608c..d7fe88b08e 100644 --- a/services/notification/pod-notification/Dockerfile +++ b/services/notification/pod-notification/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/notification/pod-notification/eslint.config.mjs b/services/notification/pod-notification/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/notification/pod-notification/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/notification/pod-notification/package.json b/services/notification/pod-notification/package.json index 765ca3dac4..83394d45a1 100644 --- a/services/notification/pod-notification/package.json +++ b/services/notification/pod-notification/package.json @@ -33,25 +33,24 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", - "eslint-plugin-node": "^11.1.0", - "@types/web-push": "^3.6.4" + "@types/web-push": "^3.6.4", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", @@ -63,7 +62,7 @@ "@hcengineering/platform": "workspace:^0.7.20", "@hcengineering/server-core": "workspace:^0.7.19", "@hcengineering/server-token": "workspace:^0.7.18", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "web-push": "^3.6.7" diff --git a/services/payment/pod-payment/.eslintrc.js b/services/payment/pod-payment/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/payment/pod-payment/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/payment/pod-payment/Dockerfile b/services/payment/pod-payment/Dockerfile index 71c9f093d5..e0f1927f52 100644 --- a/services/payment/pod-payment/Dockerfile +++ b/services/payment/pod-payment/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/services/payment/pod-payment/eslint.config.mjs b/services/payment/pod-payment/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/payment/pod-payment/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/payment/pod-payment/package.json b/services/payment/pod-payment/package.json index ceac21c186..3c28b88d2f 100644 --- a/services/payment/pod-payment/package.json +++ b/services/payment/pod-payment/package.json @@ -31,32 +31,30 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/express-rate-limit": "^6.0.0", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "cross-env": "~7.0.3", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", "@types/morgan": "~1.9.9", - "@types/on-headers": "^1.0.2", - "@types/uuid": "^8.3.1" + "@types/on-headers": "^1.0.2" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", @@ -69,13 +67,13 @@ "@hcengineering/platform": "workspace:^0.7.20", "@polar-sh/sdk": "^0.37.0", "stripe": "^17.3.1", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "express-rate-limit": "^7.4.0", - "morgan": "^1.10.0", - "postgres": "^3.4.7", + "morgan": "^1.11.0", + "postgres": "^3.4.9", "on-headers": "^1.0.2", - "uuid": "^8.3.2" + "uuid": "^11.1.1" } } diff --git a/services/payment/pod-payment/src/providers/polar/index.ts b/services/payment/pod-payment/src/providers/polar/index.ts index d55f5dcf10..7b2518ccd7 100644 --- a/services/payment/pod-payment/src/providers/polar/index.ts +++ b/services/payment/pod-payment/src/providers/polar/index.ts @@ -13,7 +13,7 @@ // limitations under the License. // -export * from './types' +export type * from './types' export * from './client' export * from './webhook' export { PolarProvider } from './provider' diff --git a/services/payment/pod-payment/src/providers/stripe/__tests__/provider.test.ts b/services/payment/pod-payment/src/providers/stripe/__tests__/provider.test.ts index 914cfc0131..43104cca3a 100644 --- a/services/payment/pod-payment/src/providers/stripe/__tests__/provider.test.ts +++ b/services/payment/pod-payment/src/providers/stripe/__tests__/provider.test.ts @@ -302,7 +302,7 @@ describe('StripeProvider', () => { // eslint-disable-next-line @typescript-eslint/consistent-type-assertions const res = {} as Response - const handleStripeWebhookSpy = jest.spyOn(webhookModule, 'handleStripeWebhook').mockResolvedValue(undefined as any) + const handleStripeWebhookSpy = jest.spyOn(webhookModule, 'handleStripeWebhook').mockResolvedValue(undefined) handler(req, res) diff --git a/services/payment/pod-payment/src/providers/stripe/__tests__/webhook.test.ts b/services/payment/pod-payment/src/providers/stripe/__tests__/webhook.test.ts index 4718cbd0bd..88637d5dbf 100644 --- a/services/payment/pod-payment/src/providers/stripe/__tests__/webhook.test.ts +++ b/services/payment/pod-payment/src/providers/stripe/__tests__/webhook.test.ts @@ -46,7 +46,7 @@ describe('handleStripeWebhook', () => { } res = { - status: statusMock as unknown as any + status: statusMock } jest.clearAllMocks() diff --git a/services/payment/pod-payment/src/providers/stripe/index.ts b/services/payment/pod-payment/src/providers/stripe/index.ts index 6a7e3bf60b..180a34ea69 100644 --- a/services/payment/pod-payment/src/providers/stripe/index.ts +++ b/services/payment/pod-payment/src/providers/stripe/index.ts @@ -13,7 +13,7 @@ // limitations under the License. // -export * from './types' +export type * from './types' export * from './client' export * from './webhook' export { StripeProvider } from './provider' diff --git a/services/print/pod-print/.eslintrc.js b/services/print/pod-print/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/print/pod-print/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/print/pod-print/Dockerfile b/services/print/pod-print/Dockerfile index 1829a92190..4b5b83c3a1 100644 --- a/services/print/pod-print/Dockerfile +++ b/services/print/pod-print/Dockerfile @@ -1,5 +1,5 @@ -FROM platformcollective/print-base:v20260811 +FROM platformcollective/print-base:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/print/pod-print/eslint.config.mjs b/services/print/pod-print/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/print/pod-print/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/print/pod-print/package.json b/services/print/pod-print/package.json index 07cd7b7704..f7d51e1f55 100644 --- a/services/print/pod-print/package.json +++ b/services/print/pod-print/package.json @@ -33,26 +33,25 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "cross-env": "~7.0.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/server-token": "workspace:^0.7.18", @@ -63,7 +62,7 @@ "@hcengineering/server-guest-resources": "workspace:^0.7.0", "@hcengineering/platform": "workspace:^0.7.20", "@hcengineering/account-client": "workspace:^0.7.25", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", "puppeteer": "^25.3.0", diff --git a/services/print/pod-print/src/preview.ts b/services/print/pod-print/src/preview.ts index e3e2e9ce3d..29aa77c2b6 100644 --- a/services/print/pod-print/src/preview.ts +++ b/services/print/pod-print/src/preview.ts @@ -17,7 +17,7 @@ export function createPreviewQueue (maxPending = 4): { let active = false return { - run(key: string, operation: () => Promise): Promise { + run (key: string, operation: () => Promise): Promise { const existing = results.get(key) if (existing !== undefined) return existing as Promise if (active && pending.length >= maxPending) { diff --git a/services/print/pod-print/src/server.ts b/services/print/pod-print/src/server.ts index 0dfc4309db..ecb9f79d55 100644 --- a/services/print/pod-print/src/server.ts +++ b/services/print/pod-print/src/server.ts @@ -145,11 +145,11 @@ function parsePrintOptions (query: Request['query']): PrintOptions { const kind = query.kind as PrintOptions['kind'] const orientation = query.orientation as PrintOptions['orientation'] - if (kind !== undefined && !validKinds.includes(kind as any)) { + if (kind !== undefined && !validKinds.includes(kind)) { throw new ApiError(400, `Invalid print kind: ${kind}`) } - if (orientation !== undefined && !validPageOrientations.includes(orientation as any)) { + if (orientation !== undefined && !validPageOrientations.includes(orientation)) { throw new ApiError(400, `Invalid page orientation: ${orientation}`) } @@ -279,7 +279,7 @@ export function createServer ( throw new ApiError(404, `File ${file} not found`) } - const input = Buffer.concat(originalFile as any) + const input = Buffer.concat(originalFile) if (format === 'pdf' && input.length > maxDocumentBytes) { throw new ApiError(413, 'Document exceeds the 25 MiB preview limit') } diff --git a/services/process/.eslintrc.js b/services/process/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/process/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/process/Dockerfile b/services/process/Dockerfile index 8743136c15..808f633a1a 100644 --- a/services/process/Dockerfile +++ b/services/process/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/process/eslint.config.mjs b/services/process/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/process/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/process/package.json b/services/process/package.json index a992d8b23a..acd63fc5d7 100644 --- a/services/process/package.json +++ b/services/process/package.json @@ -30,23 +30,21 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@tsconfig/node16": "^1.0.4", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/uuid": "^8.3.1", - "@typescript-eslint/parser": "^6.21.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3" diff --git a/services/rating/.eslintrc.js b/services/rating/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/services/rating/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/rating/Dockerfile b/services/rating/Dockerfile index 9a0d838d20..e2119b4b87 100644 --- a/services/rating/Dockerfile +++ b/services/rating/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/rating/eslint.config.mjs b/services/rating/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/services/rating/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/services/rating/package.json b/services/rating/package.json index bceffde1a7..38190046ee 100644 --- a/services/rating/package.json +++ b/services/rating/package.json @@ -32,25 +32,25 @@ "cross-env": "~7.0.3", "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", "esbuild": "^0.25.10", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@hcengineering/model-all": "workspace:^0.7.0", "@types/koa-bodyparser": "^4.3.12", "@types/koa-router": "^7.4.8", "@types/koa": "^2.15.0", - "@types/koa__cors": "^5.0.0" + "@types/koa__cors": "^5.0.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/platform": "workspace:^0.7.20", diff --git a/services/rating/src/calculator.ts b/services/rating/src/calculator.ts index 85e29840bb..40e2ea5a0c 100644 --- a/services/rating/src/calculator.ts +++ b/services/rating/src/calculator.ts @@ -237,7 +237,7 @@ export class RatingCalculator { const newState: MigrationState = { _id: generateId(), _class: core.class.MigrationState, - plugin: ratingId as string, + plugin: ratingId, state: 'v1', modifiedOn: Date.now(), modifiedBy: systemAccount.primarySocialId, @@ -595,7 +595,7 @@ export class RatingCalculator { } ) for (const p of parents) { - parentCache.set(p._id as Ref, p) + parentCache.set(p._id, p) if (p.createdBy != null) { personIds.add(p.createdBy) } @@ -623,7 +623,7 @@ export class RatingCalculator { } case core.class.TxRemoveDoc: { this.updatePersonStats(sysRating, tx.createdOn ?? tx.modifiedOn, 'delete', tx.objectClass) - await this.handleRatingDelete(ctx, tx as TxRemoveDoc, txAuthors) + await this.handleRatingDelete(ctx, tx, txAuthors) break } } @@ -675,12 +675,12 @@ export class RatingCalculator { } notifications = new Map< - AccountUuid, - { - oldRating: number - newRating: number - person: PersonRating - } + AccountUuid, + { + oldRating: number + newRating: number + person: PersonRating + } >() private async flushUpdates ( diff --git a/services/rekoni/.eslintrc.js b/services/rekoni/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/rekoni/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/rekoni/Dockerfile b/services/rekoni/Dockerfile index 0513d4b80b..19f54e4c65 100644 --- a/services/rekoni/Dockerfile +++ b/services/rekoni/Dockerfile @@ -1,6 +1,8 @@ -FROM platformcollective/rekoni-base:v20260811 +FROM platformcollective/rekoni-base:v20261006 WORKDIR /usr/src/app +RUN npm install --ignore-scripts=false --verbose pdfjs-dist@v6.2.108 unpdf@~1.8.1 --unsafe-perm + COPY bundle/bundle.js ./ EXPOSE 4004 CMD [ "node", "./bundle.js" ] diff --git a/services/rekoni/esbuild.js b/services/rekoni/esbuild.js index 2d0c6ca175..07d3c1a1e4 100644 --- a/services/rekoni/esbuild.js +++ b/services/rekoni/esbuild.js @@ -11,5 +11,5 @@ void esbuild.build({ loader: { ".node": "file" }, platform: 'node', outfile: 'bundle/bundle.js', - external: ['canvas', 'sharp', 'pdfjs-dist'] -}) \ No newline at end of file + external: ['canvas', 'sharp', 'pdfjs-dist', 'unpdf'] +}) diff --git a/services/rekoni/eslint.config.mjs b/services/rekoni/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/rekoni/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/rekoni/package.json b/services/rekoni/package.json index b3f1333585..ebf95e8c01 100644 --- a/services/rekoni/package.json +++ b/services/rekoni/package.json @@ -27,18 +27,17 @@ "check-ts": "tsc --noEmit", "lint": "eslint src", "lint:fix": "eslint --fix src", - "test": "jest --passWithNoTests --silent", + "test": "NODE_OPTIONS=--experimental-vm-modules jest --passWithNoTests --silent", "format": "format src", - "find-skills": "ts-node ./src/find-skills.ts", "_phase:build": "compile transpile src", - "_phase:test": "jest --passWithNoTests --silent", + "_phase:test": "NODE_OPTIONS=--experimental-vm-modules jest --passWithNoTests --silent", "_phase:format": "format src", "_phase:validate": "compile validate", "build:watch": "compile" }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/html-to-text": "^8.1.1", "@types/node": "^24.13.3", @@ -46,46 +45,47 @@ "@types/body-parser": "~1.19.2", "@types/mime-types": "~2.1.1", "@types/express-form-data": "^2.0.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "eslint": "^9.39.5", + "eslint-plugin-promise": "^7.3.0", "ts-node": "^10.9.2", "ts-node-dev": "^2.0.0", "typescript": "^5.9.3", "esbuild": "^0.25.10", - "eslint-plugin-n": "^15.4.0", + "eslint-plugin-n": "^18.3.0", "prettier": "^3.6.2", - "@types/morgan": "~1.9.9" + "@types/morgan": "~1.9.9", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@anticrm/skillset": "^0.6.0", "@hcengineering/core": "workspace:^0.7.26", "body-parser": "^1.20.3", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "email-addresses": "^5.0.0", "express": "^4.21.2", - "express-form-data": "^2.0.22", + "express-form-data": "^3.0.1", "html-to-text": "^9.0.3", "jimp": "^0.16.1", "jwt-simple": "^0.5.6", "libphonenumber-js": "^1.9.46", "mammoth": "^1.9.0", "mime-types": "~2.1.34", - "pdfjs-dist": "2.12.313", - "sharp": "~0.34.3", - "morgan": "^1.10.0", + "pdfjs-dist": "6.2.108", + "sharp": "~0.35.3", + "morgan": "^1.11.0", "@hcengineering/server-core": "workspace:^0.7.19", + "@hcengineering/server-client": "workspace:^0.7.16", "@hcengineering/server-token": "workspace:^0.7.18", "@hcengineering/platform": "workspace:^0.7.20", - "@hcengineering/analytics-service": "workspace:^0.7.19" + "@hcengineering/analytics-service": "workspace:^0.7.19", + "unpdf": "~1.8.1" }, "description": "Document recognition service" } diff --git a/services/rekoni/src/__tests__/docx.smoke.test.ts b/services/rekoni/src/__tests__/docx.smoke.test.ts index 499ae6f49a..c000528a99 100644 --- a/services/rekoni/src/__tests__/docx.smoke.test.ts +++ b/services/rekoni/src/__tests__/docx.smoke.test.ts @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +import { MeasureMetricsContext } from '@hcengineering/core' import { readFile } from 'fs/promises' import { join } from 'path' import { extract } from '../extractors' @@ -18,11 +19,13 @@ import { extract } from '../extractors' const DOCX_TYPE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' describe('docx extractor smoke', () => { + const ctx = new MeasureMetricsContext('test', {}) + it('extracts plain text from a minimal docx', async () => { const fName = join(__dirname, 'fixtures', 'minimal-smoke.docx') const data = await readFile(fName) - const { matched, content, error } = await extract('minimal-smoke.docx', DOCX_TYPE, data) + const { matched, content, error } = await extract(ctx, 'minimal-smoke.docx', DOCX_TYPE, data) expect(error).toBeUndefined() expect(matched).toBe(true) diff --git a/services/rekoni/src/__tests__/extractor.test_.ts b/services/rekoni/src/__tests__/extractor.test_.ts index 578e4e50a6..b00e89932c 100644 --- a/services/rekoni/src/__tests__/extractor.test_.ts +++ b/services/rekoni/src/__tests__/extractor.test_.ts @@ -16,14 +16,17 @@ import { readFile } from 'fs/promises' import { lookup } from 'mime-types' import { extract } from '../extractors' +import { MeasureMetricsContext } from '@hcengineering/core' describe('extractor-tests', () => { + const ctx = new MeasureMetricsContext('test', {}) + it('check docx', async () => { const fName = './demo/Резюме Власова Анатолия.docx' const data = await readFile(fName) const type = lookup(fName) - const { matched, content } = await extract(fName, type, data) + const { matched, content } = await extract(ctx, fName, type, data) expect(matched).toBe(true) expect(content).toContain('садовник') @@ -34,7 +37,7 @@ describe('extractor-tests', () => { const data = await readFile(fName) const type = lookup(fName) - const { matched, content } = await extract(fName, type, data) + const { matched, content } = await extract(ctx, fName, type, data) expect(matched).toBe(true) expect(content).toContain('kibana') diff --git a/services/rekoni/src/extractors/docx.ts b/services/rekoni/src/extractors/docx.ts index af581e44c4..2871affabc 100644 --- a/services/rekoni/src/extractors/docx.ts +++ b/services/rekoni/src/extractors/docx.ts @@ -35,10 +35,10 @@ export const docxExtractor: DocumentExtractor = { } ) - const text = convertString(htmlData.value) - return text + return convertString(htmlData.value) } } + function isType (type: string): boolean { return type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' } diff --git a/services/rekoni/src/extractors/index.ts b/services/rekoni/src/extractors/index.ts index f6ee170a1e..794197c3a8 100644 --- a/services/rekoni/src/extractors/index.ts +++ b/services/rekoni/src/extractors/index.ts @@ -5,7 +5,8 @@ import { htmlExtractor } from './html' import { pdfExtractor } from './pdf' import { rtfExtractor } from './rtf' import { DocumentExtractor } from './types' -export * from './types' +import { MeasureContext } from '@hcengineering/core' +export type * from './types' const extractors: Record = { pdf: pdfExtractor, @@ -16,6 +17,7 @@ const extractors: Record = { } export async function extract ( + ctx: MeasureContext, fileName: string, type: string | false, data: Buffer @@ -23,17 +25,20 @@ export async function extract ( if (type === false) { return { matched: true, content: '', error: new Error('Unknown file type') } } - console.log('extracting text ', fileName, type) + + ctx.info('extracting text ', { fileName, type }) + for (const ex of Object.entries(extractors)) { if (await ex[1].isMatch(fileName, type, data)) { try { const content = await ex[1].extract(fileName, type, data) return { matched: true, content } } catch (err: any) { - console.log(err) + ctx.error('extract error', { err }) return { matched: true, content: '', error: err } } } } + return { matched: false, content: '' } } diff --git a/services/rekoni/src/extractpdf.ts b/services/rekoni/src/extractpdf.ts index 5ee052327c..b985ce1223 100644 --- a/services/rekoni/src/extractpdf.ts +++ b/services/rekoni/src/extractpdf.ts @@ -1,5 +1,6 @@ // // Copyright © 2022 Hardcore Engineering Inc. +// Copyright © 2026 TraceX SAS. // // Licensed under the Eclipse Public License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. You may @@ -13,73 +14,50 @@ // limitations under the License. // -import { getDocument, OPS, type PDFPageProxy } from 'pdfjs-dist/legacy/build/pdf' -import { type TextItem, type TypedArray } from 'pdfjs-dist/types/src/display/api' import sharp from 'sharp' +import { + extractImages, + extractLinks, + extractTextItems, + getDocumentProxy, + getMeta, + type StructuredTextItem +} from 'unpdf' import { type RekoniModel } from './types' import { isPrivateCharCode } from './utils' -// Some PDFs need external cmaps. -const CMAP_URL = './node_modules/pdfjs-dist/cmaps/' -const CMAP_PACKED = true - -// Where the standard fonts are located. -const STANDARD_FONT_DATA_URL = './node_modules/pdfjs-dist/standard_fonts/' - /** * @public */ -export async function extractData (data: string | TypedArray): Promise { - const doc = await getDocument({ - data, - cMapUrl: CMAP_URL, - cMapPacked: CMAP_PACKED, - standardFontDataUrl: STANDARD_FONT_DATA_URL - }).promise - const meta = await doc.getMetadata() +export async function extractData (data: string | Uint8Array): Promise { + const doc = await getDocumentProxy(Buffer.isBuffer(data) ? new Uint8Array(data) : data) + const [meta, textItems, links] = await Promise.all([getMeta(doc), extractTextItems(doc), extractLinks(doc)]) const text: RekoniModel = { lines: [], annotations: [], images: [], - author: (meta.info as any).Author + author: typeof meta.info.Author === 'string' ? meta.info.Author : undefined } - const imageOps = [ - OPS.paintJpegXObject, - OPS.paintImageMaskXObject, - OPS.paintImageMaskXObjectGroup, - OPS.paintImageXObject, - OPS.paintInlineImageXObject, - OPS.paintInlineImageXObjectGroup, - OPS.paintImageXObjectRepeat, - OPS.paintImageMaskXObjectRepeat, - OPS.paintSolidColorImageMask - ] - - for (let i = 1; i <= doc.numPages; i++) { - const page = await doc.getPage(i) + for (const link of links.links) { + text.annotations.push({ type: 'link', value: link }) + } - await processAnnotations(page, text) - await processImages(page, imageOps, text) - await processPage(text, page) + for (const [pageIndex, items] of textItems.items.entries()) { + processPage(text, items) + await processImages(await extractImages(doc, pageIndex + 1), text) } return text } -async function processPage (text: RekoniModel, page: PDFPageProxy): Promise { - const textContent = await page.getTextContent({ - normalizeWhitespace: true, - disableCombineTextItems: false, - includeMarkedContent: false - }) - +function processPage (text: RekoniModel, items: StructuredTextItem[]): void { let lastY: number = 0 let ctext: string[] = [] let widths: number[] = [] let maxH = 0 - for (const item of textContent.items as TextItem[]) { + for (const item of items) { const str = item.str if (str.length === 1) { const code = str.charCodeAt(0) @@ -88,7 +66,7 @@ async function processPage (text: RekoniModel, page: PDFPageProxy): Promise 0) { ctext.push(item.str) widths.push(item.width) @@ -108,87 +86,33 @@ async function processPage (text: RekoniModel, page: PDFPageProxy): Promise { - const annotations = await page.getAnnotations({ intent: 'any' }) - for (const ann of annotations) { - if ((ann.subtype ?? '').toLowerCase() === 'link' && ann.url !== undefined) { - text.annotations.push({ type: ann.subtype.toLowerCase(), value: ann.url }) - } - } -} - -async function processImages (page: PDFPageProxy, imageOps: number[], text: RekoniModel): Promise { - const operators = await page.getOperatorList() - for (let i = 0; i < operators.fnArray.length; i++) { - const tt = operators.fnArray[i] - if (imageOps.includes(tt)) { - const obj = operators.argsArray[i][0] as string - let objData: any - if (obj.startsWith('g_')) { - objData = page.commonObjs.get(obj) - } else { - objData = page.objs.get(obj) +async function processImages (images: Awaited>, text: RekoniModel): Promise { + for (const image of images) { + const imageBuffer = Buffer.from(image.data.buffer, image.data.byteOffset, image.data.byteLength) + const img = sharp(imageBuffer, { + raw: { + width: image.width, + height: image.height, + channels: image.channels } - if (objData !== undefined) { - const width = objData.width - const height = objData.height - - const rawBuffer = processImageData(objData) - - const img = sharp(rawBuffer, { - raw: { - width, - height, - channels: 4 - } - }) - - const pngBuffer = await img.toFormat('png').toBuffer() - const buffer = await img.toFormat('jpeg').toBuffer() - - text.images.push({ - name: obj + '.jpeg', - width, - height, - buffer, - pngBuffer, - format: 'image/jpeg', - potentialAvatar: true - }) - } - } - } -} - -function processImageData (objData: any): Buffer { - const result = Buffer.alloc(objData.width * objData.height * 4) - if (objData.kind === 2) { - // ImageKind.RGB_24BPP) { - let pos = 0 - for (let i = 0; i < objData.data.length; i += 3) { - result[pos] = objData.data[i] - result[pos + 1] = objData.data[i + 1] - result[pos + 2] = objData.data[i + 2] - result[pos + 3] = 0xff - - pos += 4 - } - } else if (objData.kind === 3) { - // Util.ImageKind.RGBA_32BPP) { - let pos = 0 - for (let i = 0; i < objData.data.length; i += 4) { - result[pos] = objData.data[i] - result[pos + 1] = objData.data[i + 1] - result[pos + 2] = objData.data[i + 2] - result[pos + 3] = objData.data[i + 3] - - pos += 4 - } + }) + + const pngBuffer = await img.toFormat('png').toBuffer() + const buffer = await img.toFormat('jpeg').toBuffer() + + text.images.push({ + name: image.key + '.jpeg', + width: image.width, + height: image.height, + buffer, + pngBuffer, + format: 'image/jpeg', + potentialAvatar: true + }) } - return result } diff --git a/services/rekoni/src/find-skills.ts b/services/rekoni/src/find-skills.ts deleted file mode 100644 index ac82552210..0000000000 --- a/services/rekoni/src/find-skills.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { getCategories, SkillCategory } from '@anticrm/skillset' -import { existsSync, mkdirSync, readdirSync, readFileSync } from 'fs' -import { writeFile } from 'fs/promises' -import { join } from 'path' -import { extractDocument } from './process' - -const pdfDir = process.argv[2] - -const files = readdirSync(pdfDir) - -const skills = new Map() - -const formats = new Map() - -const resumesRoot = './resumes' -if (!existsSync(resumesRoot)) { - mkdirSync(resumesRoot) -} - -const categories = getCategories() - -async function readFiles (): Promise { - for (const filename of files) { - const pdfFile = join(pdfDir, filename) - const data = readFileSync(pdfFile) - - const { resume, model } = await extractDocument(data) - if (resume !== undefined) { - formats.set(resume.format, (formats.get(resume.format) ?? 0) + 1) - - console.log('resume for', resume.format, resume.firstName, resume.lastName) - if (resume.skills.length > 0) { - for (const s of resume.skills) { - // Check - const es = skills.get(s) ?? { count: 0, category: undefined } - es.count++ - if (es.category === undefined) { - // Try find category. - for (const c of categories) { - if (c.skills.findIndex((it) => it.toLowerCase() === s.toLowerCase()) !== -1) { - es.category = c - break - } - } - } - skills.set(s, es) - } - } - const path = [resumesRoot, resume.format] - if (resume.skills.length === 0) { - path.push('no-skills') - } else { - path.push('skills') - } - if (!existsSync(join(...path))) { - mkdirSync(join(...path), { recursive: true }) - } - await writeFile(join(...path, filename), data) - await writeFile(join(...path, filename + '.resume.json'), JSON.stringify(resume, undefined, 2)) - for (const img of model.images) { - await writeFile(join(...path, filename + '._' + img.name + '.png'), img.pngBuffer) - } - model.images = [] - await writeFile(join(...path, filename + '.model.json'), JSON.stringify(model, undefined, 2)) - } - } - const filteredSkills = Array.from(skills.entries()) - .filter((it) => it[1].count > 1) - .map((it) => it[0]) - - const raw = Array.from(skills.entries()) - raw.sort((a, b) => b[1].count - a[1].count) - - await writeFile('./skills.json', JSON.stringify(filteredSkills, undefined, 2)) - await writeFile( - './skills_raw.json', - JSON.stringify( - raw.map((it) => `${it[0]}-${it[1].count}-${(it[1].category?.label as string) ?? 'Unknown'}`), - undefined, - 2 - ) - ) - - console.log('Formats', Array.from(formats.entries())) -} - -readFiles().catch((err) => { - console.error(err) -}) diff --git a/services/rekoni/src/process.ts b/services/rekoni/src/process.ts index 09c71c20da..7c06ff9b73 100644 --- a/services/rekoni/src/process.ts +++ b/services/rekoni/src/process.ts @@ -13,7 +13,6 @@ // limitations under the License. // -import { type TypedArray } from 'pdfjs-dist/types/src/display/api' import { extractData } from './extractpdf' import { parseGenericResume } from './generic' import { isHeadHunter, parseHeadHunter } from './headhunter' @@ -23,7 +22,7 @@ import { isLinkedin, parseLinkedin } from './linkedin' import { capitalizeName } from './utils' export async function extractDocument ( - data: string | TypedArray + data: string | Uint8Array ): Promise<{ resume: ReconiDocument, model: RekoniModel }> { const resume: ReconiDocument = { format: 'unknown', diff --git a/services/rekoni/src/server.ts b/services/rekoni/src/server.ts index 43f9138a04..c5dd060538 100644 --- a/services/rekoni/src/server.ts +++ b/services/rekoni/src/server.ts @@ -17,12 +17,13 @@ import { createOpenTelemetryMetricsContext, SplitLogger } from '@hcengineering/a import { newMetrics } from '@hcengineering/core' import { setMetadata } from '@hcengineering/platform' import { initStatisticsContext } from '@hcengineering/server-core' +import { extractToken } from '@hcengineering/server-client' import serverToken from '@hcengineering/server-token' import bodyParser from 'body-parser' import cors from 'cors' import express from 'express' import formData from 'express-form-data' -import { type IncomingHttpHeaders, type Server } from 'http' +import { type Server } from 'http' import morgan from 'morgan' import os from 'os' import { join } from 'path' @@ -31,24 +32,16 @@ import config from './config' import { ApiError } from './error' import { extract } from './extractors' import { parseGenericResume } from './generic' -import { decode } from './jwt' import { extractDocument } from './process' import { type ReconiDocument } from './types' // eslint-disable-next-line @typescript-eslint/no-var-requires -const extractToken = (header: IncomingHttpHeaders): any => { - try { - return header.authorization?.slice(7) ?? '' - } catch { - return undefined - } -} - export const startServer = async (): Promise => { const app = express() setMetadata(serverToken.metadata.Secret, process.env.SECRET) setMetadata(serverToken.metadata.Service, 'rekoni') + const ctx = initStatisticsContext('rekoni', { factory: () => createOpenTelemetryMetricsContext( @@ -107,7 +100,7 @@ export const startServer = async (): Promise => { let idx = 0 // Allow to execute 30 per second. const extractQueue = { - add: async (exec: () => Promise): Promise => { + add: async (exec: () => Promise): Promise => { if (ops.size > 100) { await Promise.any(ops.values()) } @@ -127,9 +120,14 @@ export const startServer = async (): Promise => { // eslint-disable-next-line @typescript-eslint/no-misused-promises app.post('/recognize', async (req, res) => { const token = extractToken(req.headers) - decode(token) + if (token === undefined) { + res.status(401).send() + return + } + const params = req.body - console.log('recognize from', params.fileUrl) + + ctx.info('recognize', { url: params.fileUrl }) const contentType = req.body.type as string const name = req.body.name as string @@ -142,7 +140,7 @@ export const startServer = async (): Promise => { temp.push(d) }) bodyStream.on('end', function () { - resolve(Buffer.concat(temp as any)) + resolve(Buffer.concat(temp)) }) }) @@ -164,7 +162,7 @@ export const startServer = async (): Promise => { await extractQueue.add(async () => { res.set('Cache-Control', 'no-cache') try { - const { content, error } = await extract(name, contentType, body) + const { content, error } = await extract(ctx, name, contentType, body) if (error !== undefined) { res.status(400) res.json({ error: JSON.stringify(error) }) @@ -215,7 +213,11 @@ export const startServer = async (): Promise => { app.post('/toText', async (req, res) => { try { const token = extractToken(req.headers) - decode(token) + if (token === undefined) { + res.status(401).send() + return + } + const name = req.query.name as string const contentType = req.query.type as string const body = typeof req.body === 'string' ? Buffer.from(req.body, 'base64') : (req.body as Buffer) @@ -226,7 +228,7 @@ export const startServer = async (): Promise => { {}, () => extractQueue.add(async () => { - const { matched, content, error } = await extract(name, contentType, body) + const { matched, content, error } = await extract(ctx, name, contentType, body) if (error !== undefined) { res.status(400) } else { diff --git a/services/sign/pod-sign/.eslintrc.js b/services/sign/pod-sign/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/sign/pod-sign/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/sign/pod-sign/Dockerfile b/services/sign/pod-sign/Dockerfile index e8a66a23f8..cbf577434c 100644 --- a/services/sign/pod-sign/Dockerfile +++ b/services/sign/pod-sign/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/sign/pod-sign/eslint.config.mjs b/services/sign/pod-sign/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/sign/pod-sign/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/sign/pod-sign/package.json b/services/sign/pod-sign/package.json index e54616301e..b479c839d0 100644 --- a/services/sign/pod-sign/package.json +++ b/services/sign/pod-sign/package.json @@ -33,24 +33,23 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/server-token": "workspace:^0.7.18", @@ -63,15 +62,15 @@ "@hcengineering/client-resources": "workspace:^0.7.19", "@hcengineering/server-client": "workspace:^0.7.16", "@hcengineering/account-client": "workspace:^0.7.25", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", - "@signpdf/signpdf": "^3.2.4", - "@signpdf/placeholder-pdf-lib": "^3.2.4", - "@signpdf/signer-p12": "^3.2.4", - "@signpdf/utils": "^3.2.4", - "node-forge": "^1.3.1", - "pdf-lib": "^1.12.0", + "@signpdf/signpdf": "^3.3.0", + "@signpdf/placeholder-pdf-lib": "^3.3.0", + "@signpdf/signer-p12": "^3.3.0", + "@signpdf/utils": "^3.3.0", + "node-forge": "^1.3.3", + "pdf-lib": "^1.17.1", "mongodb": "^6.16.0", "@hcengineering/analytics-service": "workspace:^0.7.19" } diff --git a/services/telegram-bot/pod-telegram-bot/.eslintrc.js b/services/telegram-bot/pod-telegram-bot/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/telegram-bot/pod-telegram-bot/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/telegram-bot/pod-telegram-bot/Dockerfile b/services/telegram-bot/pod-telegram-bot/Dockerfile index af5ec4b948..3bb78ba432 100644 --- a/services/telegram-bot/pod-telegram-bot/Dockerfile +++ b/services/telegram-bot/pod-telegram-bot/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/telegram-bot/pod-telegram-bot/eslint.config.mjs b/services/telegram-bot/pod-telegram-bot/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/telegram-bot/pod-telegram-bot/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/telegram-bot/pod-telegram-bot/package.json b/services/telegram-bot/pod-telegram-bot/package.json index 61c38297f0..f263164d85 100644 --- a/services/telegram-bot/pod-telegram-bot/package.json +++ b/services/telegram-bot/pod-telegram-bot/package.json @@ -31,26 +31,25 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", "@types/otp-generator": "^4.0.2", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/activity": "workspace:^0.7.0", @@ -78,13 +77,13 @@ "@hcengineering/text": "workspace:^0.7.19", "@hcengineering/api-client": "workspace:^0.7.25", "@telegraf/entity": "^0.5.0", - "cors": "^2.8.5", + "cors": "^2.8.6", "dotenv": "^16.4.5", "express": "^4.21.2", - "htmlparser2": "^9.0.0", + "htmlparser2": "~10.1.0", "mongodb": "^6.16.0", "otp-generator": "^4.0.1", - "postgres": "^3.4.7", + "postgres": "^3.4.9", "telegraf": "^4.16.3" } } diff --git a/services/telegram-bot/pod-telegram-bot/src/limiter.ts b/services/telegram-bot/pod-telegram-bot/src/limiter.ts index ad48077e52..41dc14ce2c 100644 --- a/services/telegram-bot/pod-telegram-bot/src/limiter.ts +++ b/services/telegram-bot/pod-telegram-bot/src/limiter.ts @@ -42,7 +42,7 @@ export class Limiter { }, this.chatTimeLimit) } - async exec(op: () => Promise): Promise { + async exec (op: () => Promise): Promise { while (this.sentMsg >= this.maxMsgPerTime) { await new Promise((resolve) => setTimeout(resolve, Math.max(Date.now() - this.clearTimeLimitOn), 10)) } @@ -56,7 +56,7 @@ export class Limiter { } } - async add(telegramId: number, op: () => Promise): Promise { + async add (telegramId: number, op: () => Promise): Promise { await this.updateChatLimits(telegramId) if (this.sentMsg >= this.maxMsgPerTime) { diff --git a/services/telegram-bot/pod-telegram-bot/src/start.ts b/services/telegram-bot/pod-telegram-bot/src/start.ts index 7f312aab1b..b5dc522497 100644 --- a/services/telegram-bot/pod-telegram-bot/src/start.ts +++ b/services/telegram-bot/pod-telegram-bot/src/start.ts @@ -106,7 +106,8 @@ export const start = async (): Promise => { ) const onClose = (): void => { - void Promise.all([consumer.close(), worker.close(), server.close()]).then(() => { + server.close() + void Promise.all([consumer.close(), worker.close()]).then(() => { process.exit() }) } diff --git a/services/telegram-bot/pod-telegram-bot/src/telegraf/types.ts b/services/telegram-bot/pod-telegram-bot/src/telegraf/types.ts index adb0416364..fd90cd099f 100644 --- a/services/telegram-bot/pod-telegram-bot/src/telegraf/types.ts +++ b/services/telegram-bot/pod-telegram-bot/src/telegraf/types.ts @@ -17,9 +17,9 @@ import { Message, Update } from 'telegraf/typings/core/types/typegram' import { Context, Scenes } from 'telegraf' export type ReplyMessage = Update.New & -Update.NonChannel & -Message.TextMessage & -(Message.PhotoMessage | Message.VoiceMessage | Message.VideoMessage | Message.VideoNoteMessage) + Update.NonChannel & + Message.TextMessage & + (Message.PhotoMessage | Message.VoiceMessage | Message.VideoMessage | Message.VideoNoteMessage) export interface TgContext extends Context { processingKeyboards: Set diff --git a/services/telegram-bot/pod-telegram-bot/src/utils.ts b/services/telegram-bot/pod-telegram-bot/src/utils.ts index 550deca5d4..ccbd12a8cf 100644 --- a/services/telegram-bot/pod-telegram-bot/src/utils.ts +++ b/services/telegram-bot/pod-telegram-bot/src/utils.ts @@ -79,12 +79,12 @@ export function platformToTelegram (message: string, limit: number): string { let textLength = 0 let newMessage = '' const openedTags = new Map< - string, - { - count: number - hasContent: boolean - defaultText: string - } + string, + { + count: number + hasContent: boolean + defaultText: string + } >() const parser = new Parser({ @@ -254,12 +254,12 @@ export function toMediaGroups (files: PlatformFileInfo[], fullMessage: string, s export async function toTelegramFileInfo ( ctx: Context, message: - | Message.CommonMessage - | Message.PhotoMessage - | Message.VideoMessage - | Message.VoiceMessage - | Message.VideoNoteMessage - | Message.DocumentMessage + | Message.CommonMessage + | Message.PhotoMessage + | Message.VideoMessage + | Message.VoiceMessage + | Message.VideoNoteMessage + | Message.DocumentMessage ): Promise { try { if ('photo' in message) { diff --git a/services/telegram-bot/pod-telegram-bot/src/workspace.ts b/services/telegram-bot/pod-telegram-bot/src/workspace.ts index d7893f7454..7685369170 100644 --- a/services/telegram-bot/pod-telegram-bot/src/workspace.ts +++ b/services/telegram-bot/pod-telegram-bot/src/workspace.ts @@ -119,7 +119,7 @@ export class WorkspaceClient { } if (hierarchy.isDerived(objectClass, core.class.Space)) { - const space = await this.client.findOne(objectClass, { _id: objectId as Ref, members: account }) + const space = await this.client.findOne(objectClass, { _id: objectId, members: account }) return space !== undefined } @@ -282,7 +282,7 @@ export class WorkspaceClient { } async getPersons (_ids: AccountUuid[]): Promise { - return (await this.client.findAll(contact.class.Person, { personUuid: { $in: _ids } })) as Person[] + return await this.client.findAll(contact.class.Person, { personUuid: { $in: _ids } }) } async sendMessage ( diff --git a/services/telegram/pod-telegram/.eslintrc.js b/services/telegram/pod-telegram/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/telegram/pod-telegram/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/telegram/pod-telegram/Dockerfile b/services/telegram/pod-telegram/Dockerfile index eaace8b96b..ed74df716e 100644 --- a/services/telegram/pod-telegram/Dockerfile +++ b/services/telegram/pod-telegram/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/telegram/pod-telegram/eslint.config.mjs b/services/telegram/pod-telegram/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/telegram/pod-telegram/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/telegram/pod-telegram/package.json b/services/telegram/pod-telegram/package.json index e4b94a4498..87a5f875eb 100644 --- a/services/telegram/pod-telegram/package.json +++ b/services/telegram/pod-telegram/package.json @@ -30,29 +30,28 @@ "_phase:validate": "compile validate" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@hcengineering/platform-rig": "workspace:^0.7.21", "@tsconfig/node16": "^1.0.4", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", "@types/mime": "^3.0.1", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", "esbuild": "^0.25.10", "prettier": "^3.6.2", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "ts-node-dev": "^2.0.0", "bson": "^6.10.3", "typescript": "^5.9.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", - "@types/uuid": "^8.3.1" + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "eslint": "^9.39.5" }, "dependencies": { "@hcengineering/attachment": "workspace:^0.7.0", @@ -70,14 +69,14 @@ "@hcengineering/mongo": "workspace:^0.7.16", "big-integer": "^1.6.51", "dotenv": "^16.4.5", - "cors": "^2.8.5", + "cors": "^2.8.6", "express": "^4.21.2", - "htmlparser2": "^9.0.0", + "htmlparser2": "~10.1.0", "jwt-simple": "^0.5.6", "mime": "^3.0.0", "mongodb": "^6.16.0", "telegram": "2.22.2", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "ws": "^8.21.0", "@hcengineering/analytics-service": "workspace:^0.7.19" } diff --git a/services/telegram/pod-telegram/src/config.ts b/services/telegram/pod-telegram/src/config.ts index b4687813e3..809fac181d 100644 --- a/services/telegram/pod-telegram/src/config.ts +++ b/services/telegram/pod-telegram/src/config.ts @@ -49,7 +49,7 @@ const defaults: Partial = { const required: Array = ['TelegramApiID', 'TelegramApiHash', 'MongoURI', 'AccountsURL', 'Secret'] -const mergeConfigs = (defaults: Partial, params: Partial): T => { +const mergeConfigs = (defaults: Partial, params: Partial): T => { const result = { ...defaults } for (const key in params) { if (params[key] !== undefined) { diff --git a/services/telegram/pod-telegram/src/escaping.ts b/services/telegram/pod-telegram/src/escaping.ts index af97c98308..d84a083356 100644 --- a/services/telegram/pod-telegram/src/escaping.ts +++ b/services/telegram/pod-telegram/src/escaping.ts @@ -1,10 +1,21 @@ export const escape = (str: string): string => { try { - return str.replace(/&/g, '&').replace(//g, '>') - } catch (ee: any) { - console.error(ee) + return str + .replace(/&/gv, '&') + .replace(//gv, '>') + .replace(/"/gv, '"') + .replace(/'/gv, ''') + } catch (e) { + console.error(e) } return str } -export const unescape = (str: string): string => str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') +export const unescape = (str: string): string => + str + .replace(/&/gv, '&') + .replace(/</gv, '<') + .replace(/>/gv, '>') + .replace(/"/gv, '"') + .replace(/'/gv, "'") diff --git a/services/telegram/pod-telegram/src/markup.ts b/services/telegram/pod-telegram/src/markup.ts index f89137eee1..7bba4d6f75 100644 --- a/services/telegram/pod-telegram/src/markup.ts +++ b/services/telegram/pod-telegram/src/markup.ts @@ -21,12 +21,12 @@ const entityMap = new Map([ export function platformToTelegram (message: string): TelegramMessage { const openedTags = new Map< - string, - { - offset: number - count: number - url?: string - } + string, + { + offset: number + count: number + url?: string + } >() let pureMessage = '' const entities: Api.TypeMessageEntity[] = [] @@ -108,7 +108,7 @@ export function platformToTelegram (message: string): TelegramMessage { } } -const transform = (text: string): string => escape(text).replace(/\n/g, '
') +const transform = (text: string): string => escape(text).replace(/\n/gv, '
') // FYI, copypasted from here: // https://github.com/gram-js/gramjs/blob/master/gramjs/extensions/html.ts diff --git a/services/telegram/pod-telegram/src/platform.ts b/services/telegram/pod-telegram/src/platform.ts index 9bf9c8e96e..44c515e052 100644 --- a/services/telegram/pod-telegram/src/platform.ts +++ b/services/telegram/pod-telegram/src/platform.ts @@ -72,7 +72,7 @@ export class PlatformWorker { } static async createStorages (): Promise< - [Collection, Collection, Collection] + [Collection, Collection, Collection] > { const db = await getDB() const userStorage = db.collection('integrations') diff --git a/services/telegram/pod-telegram/src/telegram.ts b/services/telegram/pod-telegram/src/telegram.ts index 34d9e96ebc..2ecb69ce7d 100644 --- a/services/telegram/pod-telegram/src/telegram.ts +++ b/services/telegram/pod-telegram/src/telegram.ts @@ -314,7 +314,7 @@ class TelegramConnection { getToken (): string | undefined { // TODO: Need recheck // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression - return (this.client.session.save() as never as string) ?? undefined + return (this.client.session.save() as never) ?? undefined } } diff --git a/services/telegram/pod-telegram/src/utils.ts b/services/telegram/pod-telegram/src/utils.ts index 04b0c29719..f7d2dc267a 100644 --- a/services/telegram/pod-telegram/src/utils.ts +++ b/services/telegram/pod-telegram/src/utils.ts @@ -1,4 +1,4 @@ -import client, { ClientSocket } from '@hcengineering/client' +import client from '@hcengineering/client' import { Client } from '@hcengineering/core' import { setMetadata } from '@hcengineering/platform' import { createClient, getTransactorEndpoint } from '@hcengineering/server-client' @@ -62,7 +62,7 @@ export async function createPlatformClient (token: string): Promise { headers: { 'User-Agent': config.ServiceID } - }) as never as ClientSocket + }) as never }) const endpoint = await getTransactorEndpoint(token) diff --git a/services/telegram/pod-telegram/src/workspace.ts b/services/telegram/pod-telegram/src/workspace.ts index 75cfdd0e41..fc8c15bee9 100644 --- a/services/telegram/pod-telegram/src/workspace.ts +++ b/services/telegram/pod-telegram/src/workspace.ts @@ -35,11 +35,11 @@ import { createPlatformClient, getFiles, normalizeValue } from './utils' export class WorkspaceWorker { private readonly clients = new Map< - string, - { - conn: TelegramConnectionInterface - queue?: MsgQueue - } + string, + { + conn: TelegramConnectionInterface + queue?: MsgQueue + } >() private channels: Map = new Map() @@ -639,7 +639,7 @@ export class WorkspaceWorker { const res: Buffer[] = [] for (const attachment of attachments) { const chunks = await this.storageAdapter.read(this.ctx, this.workspace as any, attachment.file) // TODO: FIXME <--WorkspaceIds - const buffer = Buffer.concat(chunks as unknown as Uint8Array[]) + const buffer = Buffer.concat(chunks) if (buffer.length > 0) { res.push( Object.assign(buffer, { diff --git a/services/translate/Dockerfile b/services/translate/Dockerfile index 8743136c15..808f633a1a 100644 --- a/services/translate/Dockerfile +++ b/services/translate/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/translate/eslint.config.mjs b/services/translate/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/translate/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/translate/package.json b/services/translate/package.json index b943ac73b0..c64382a645 100644 --- a/services/translate/package.json +++ b/services/translate/package.json @@ -33,23 +33,22 @@ "@tsconfig/node16": "^1.0.4", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", "@types/uuid": "^8.3.1", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0" }, "dependencies": { "@hcengineering/account-client": "workspace:^0.7.25", diff --git a/services/translate/src/utils.ts b/services/translate/src/utils.ts index e5caa9b253..2332ac9a02 100644 --- a/services/translate/src/utils.ts +++ b/services/translate/src/utils.ts @@ -26,11 +26,11 @@ import { MessageProcessor } from '@hcengineering/communication-shared' const COMMUNICATION_DOMAIN = 'communication' as Domain export function extractCreateMessageData (tx: Tx): -| { - message: Message - blobId: BlobID -} -| undefined { + | { + message: Message + blobId: BlobID + } + | undefined { if (tx._class !== core.class.TxDomainEvent) return undefined const domainTx = tx as TxDomainEvent @@ -52,13 +52,13 @@ export function extractCreateMessageData (tx: Tx): } export function extractUpdateMessageData (tx: Tx): -| { - cardId: CardID - messageId: MessageID - content: Markdown - blobId: BlobID -} -| undefined { + | { + cardId: CardID + messageId: MessageID + content: Markdown + blobId: BlobID + } + | undefined { if (tx._class !== core.class.TxDomainEvent) return undefined const domainTx = tx as TxDomainEvent @@ -76,12 +76,12 @@ export function extractUpdateMessageData (tx: Tx): } export function extractRemoveMessageData (tx: Tx): -| { - cardId: CardID - messageId: MessageID - blobId: BlobID -} -| undefined { + | { + cardId: CardID + messageId: MessageID + blobId: BlobID + } + | undefined { if (tx._class !== core.class.TxDomainEvent) return undefined const domainTx = tx as TxDomainEvent diff --git a/services/worker/.eslintrc.js b/services/worker/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/services/worker/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/services/worker/Dockerfile b/services/worker/Dockerfile index 8743136c15..808f633a1a 100644 --- a/services/worker/Dockerfile +++ b/services/worker/Dockerfile @@ -1,4 +1,4 @@ -FROM platformcollective/base-slim:v20260811 +FROM platformcollective/base-slim:v20261006 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/worker/eslint.config.mjs b/services/worker/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/services/worker/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/services/worker/package.json b/services/worker/package.json index f3327f3b26..774bbea2a6 100644 --- a/services/worker/package.json +++ b/services/worker/package.json @@ -33,24 +33,22 @@ "run-local": "cross-env QUEUE_CONFIG='localhost:19092' REGION='cockroach' ts-node src/index.ts" }, "devDependencies": { + "eslint-config-love": "^157.0.0", + "eslint-plugin-svelte": "^3.23.0", "@tsconfig/node16": "^1.0.4", "cross-env": "~7.0.3", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", "@hcengineering/platform-rig": "workspace:^0.7.21", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5", - "@types/uuid": "^8.3.1", - "@typescript-eslint/parser": "^6.21.0", + "jest": "^30.4.2", + "ts-jest": "^29.4.12", + "@types/jest": "^30.0.0", + "@typescript-eslint/parser": "^8.67.0", "esbuild": "^0.25.10", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", "prettier": "^3.6.2", "ts-node": "^10.9.2", "typescript": "^5.9.3", @@ -61,7 +59,7 @@ "@hcengineering/process": "workspace:^0.7.0", "@hcengineering/core": "workspace:^0.7.26", "@hcengineering/server-core": "workspace:^0.7.19", - "postgres": "^3.4.7", + "postgres": "^3.4.9", "dotenv": "^16.4.5" } } diff --git a/services/worker/src/activities.ts b/services/worker/src/activities.ts index fef9aad9a4..735a5cd35c 100644 --- a/services/worker/src/activities.ts +++ b/services/worker/src/activities.ts @@ -11,7 +11,7 @@ export async function SendTimeEvent ( const SERVICE_NAME = 'time-machine' const queue = getPlatformQueue(SERVICE_NAME, config.QueueRegion) - const producer = queue.getProducer(ctx, topic as any) + const producer = queue.getProducer(ctx, topic) await producer.send(ctx, ws, [data]) } diff --git a/services/worker/src/db.ts b/services/worker/src/db.ts index 577d97aef4..5c32fbd30a 100644 --- a/services/worker/src/db.ts +++ b/services/worker/src/db.ts @@ -91,7 +91,7 @@ export class TimeMachineDB { async deleteEvents (events: DelayedEventRecord[]): Promise { if (events.length === 0) return - await this.client.begin(async (sql: postgres.Sql) => { + await this.client.begin(async (sql) => { for (const event of events) { await sql` DELETE FROM time_machine.delayed_events diff --git a/templates/assets/.eslintrc.js b/templates/assets/.eslintrc.js deleted file mode 100644 index e73094bc7e..0000000000 --- a/templates/assets/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/templates/assets/eslint.config.mjs b/templates/assets/eslint.config.mjs new file mode 100644 index 0000000000..f7b605c3e9 --- /dev/null +++ b/templates/assets/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/assets/eslint.config.mjs' + +export default config diff --git a/templates/assets/package.json b/templates/assets/package.json index 5d358b8f38..4b79229876 100644 --- a/templates/assets/package.json +++ b/templates/assets/package.json @@ -53,10 +53,11 @@ "@hcengineering/platform-rig": "workspace:^0.7.21", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-secure-coding": "^5.4.4", "eslint": "^8.54.0", "prettier": "^3.6.2", "@types/node": "^24.13.3", diff --git a/templates/cloud/.eslintrc.js b/templates/cloud/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/templates/cloud/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/templates/cloud/eslint.config.mjs b/templates/cloud/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/templates/cloud/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/templates/cloud/package.json b/templates/cloud/package.json index 79e5a5a298..abb52d7767 100644 --- a/templates/cloud/package.json +++ b/templates/cloud/package.json @@ -28,10 +28,11 @@ "wrangler": "^3.108.1", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-secure-coding": "^5.4.4", "eslint": "^8.54.0", "prettier": "^3.6.2", "jest": "^29.7.0", diff --git a/templates/model/.eslintrc.js b/templates/model/.eslintrc.js deleted file mode 100644 index c1cf82cba0..0000000000 --- a/templates/model/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/templates/model/eslint.config.mjs b/templates/model/eslint.config.mjs new file mode 100644 index 0000000000..c17c378bf4 --- /dev/null +++ b/templates/model/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/model/eslint.config.mjs' + +export default config diff --git a/templates/model/package.json b/templates/model/package.json index 7263d75444..d402d24a74 100644 --- a/templates/model/package.json +++ b/templates/model/package.json @@ -23,10 +23,11 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-secure-coding": "^5.4.4", "eslint": "^8.54.0", "prettier": "^3.6.2", "typescript": "^5.9.3", diff --git a/templates/node/.eslintrc.js b/templates/node/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/templates/node/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/templates/node/eslint.config.mjs b/templates/node/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/templates/node/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/templates/node/package.json b/templates/node/package.json index f65fd9c432..4f21af2f70 100644 --- a/templates/node/package.json +++ b/templates/node/package.json @@ -25,10 +25,11 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-secure-coding": "^5.4.4", "eslint": "^8.54.0", "prettier": "^3.6.2", "jest": "^29.7.0", diff --git a/templates/package/package.json b/templates/package/package.json index 6c5295781c..34b9219cee 100644 --- a/templates/package/package.json +++ b/templates/package/package.json @@ -6,13 +6,13 @@ "@hcengineering/platform-rig": "workspace:^0.7.21", "cross-env": "~7.0.3", "webpack-cli": "^5.1.4", - "webpack": "^5.97.1", + "webpack": "^5.110.3", "mini-css-extract-plugin": "^2.2.0", "dotenv-webpack": "^8.0.1", "ts-loader": "^9.2.5", "svelte-loader": "^3.2.0", "css-loader": "^5.2.1", - "webpack-dev-server": "^4.15.2", + "webpack-dev-server": "^6.0.0", "style-loader": "^3.3.1", "file-loader": "^6.2.0", "sass-loader": "^14.0.0", @@ -20,10 +20,10 @@ "webpack-bundle-analyzer": "^4.10.2", "svgo-loader": "^3.0.0", "autoprefixer": "^10.4.14", - "postcss": "^8.4.20", + "postcss": "8.5.28", "postcss-loader": "^7.0.2", "postcss-load-config": "^4.0.1", - "compression-webpack-plugin": "^10.0.0", + "compression-webpack-plugin": "^12.0.0", "html-webpack-plugin": "^5.5.0", "fork-ts-checker-webpack-plugin": "^9.0.2", "update-browserslist-db": "^1.2.3", diff --git a/templates/platform/.eslintrc.js b/templates/platform/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/templates/platform/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/templates/platform/eslint.config.mjs b/templates/platform/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/templates/platform/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/templates/platform/package.json b/templates/platform/package.json index 2dfdd2c258..6159daad92 100644 --- a/templates/platform/package.json +++ b/templates/platform/package.json @@ -30,10 +30,11 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-secure-coding": "^5.4.4", "eslint": "^8.54.0", "prettier": "^3.6.2", "jest": "^29.7.0", diff --git a/templates/ui/.eslintrc.js b/templates/ui/.eslintrc.js deleted file mode 100644 index bb8fd7450d..0000000000 --- a/templates/ui/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'], - parserOptions: { tsconfigRootDir: __dirname } -} diff --git a/templates/ui/eslint.config.mjs b/templates/ui/eslint.config.mjs new file mode 100644 index 0000000000..f1ad4ff026 --- /dev/null +++ b/templates/ui/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/ui/eslint.config.mjs' + +export default config diff --git a/templates/ui/package.json b/templates/ui/package.json index f02c227faf..d99a4b45af 100644 --- a/templates/ui/package.json +++ b/templates/ui/package.json @@ -20,14 +20,15 @@ "svelte-preprocess": "^5.1.4", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", + "eslint-config-love": "^157.0.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-secure-coding": "^5.4.4", "eslint": "^8.54.0", "eslint-plugin-svelte": "^2.35.1", "prettier-plugin-svelte": "^3.4.0", - "svelte-eslint-parser": "^0.33.1", + "svelte-eslint-parser": "^1.8.1", "prettier": "^3.6.2", "svelte-check": "^3.6.9", "jest": "^29.7.0", diff --git a/tests/sanity/.eslintrc.js b/tests/sanity/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/tests/sanity/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/tests/sanity/eslint.config.mjs b/tests/sanity/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/tests/sanity/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/tests/sanity/package.json b/tests/sanity/package.json index a815ddd9a0..ee0518f50a 100644 --- a/tests/sanity/package.json +++ b/tests/sanity/package.json @@ -30,21 +30,21 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "@playwright/test": "^1.48.2", - "allure-playwright": "^3.0.6", - "allure-js-commons": "^3.0.6", - "@faker-js/faker": "^8.4.1" + "@playwright/test": "^1.63.0", + "allure-playwright": "^3.12.1", + "allure-js-commons": "^3.12.1", + "@faker-js/faker": "^10.6.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "dotenv": "^16.4.5", diff --git a/tests/sanity/tests/index.ts b/tests/sanity/tests/index.ts index 2bc696f229..0da3f56def 100644 --- a/tests/sanity/tests/index.ts +++ b/tests/sanity/tests/index.ts @@ -1,14 +1,14 @@ export * from './model/login-page' export * from './model/signin-page' export * from './model/common-page' -export * from './model/common-types' +export type * from './model/common-types' export * from './model/left-side-menu-page' export * from './model/signup-page' export * from './model/select-workspace-page' export * from './utils' export * from './model/tracker/issues-page' export * from './model/tracker/issues-details-page' -export * from './model/tracker/types' +export type * from './model/tracker/types' export * from './model/tracker/common-tracker-page' export * from './model/tracker/tracker-navigation-menu-page' export * from './model/profile/user-profile-page' diff --git a/tests/sanity/tests/model/documents/documents-page.ts b/tests/sanity/tests/model/documents/documents-page.ts index c6ca2a5dd7..1d9783229d 100644 --- a/tests/sanity/tests/model/documents/documents-page.ts +++ b/tests/sanity/tests/model/documents/documents-page.ts @@ -112,6 +112,7 @@ export class DocumentsPage extends CommonPage { async moreActionTeamspace (name: string, action: string): Promise { await this.page.locator('button.hulyNavGroup-header span[class*="label"]', { hasText: name }).hover() await this.page + // eslint-disable-next-line secure-coding/no-xpath-injection .locator(`xpath=//span[text()="${name}"]/../../div[@class="hulyNavGroup-header__tools"]/button[last()]`) .click() await this.selectFromDropdown(this.page, action) diff --git a/tests/sanity/tests/model/planning/planning-page.ts b/tests/sanity/tests/model/planning/planning-page.ts index c7a52dbe76..560cfaaeb6 100644 --- a/tests/sanity/tests/model/planning/planning-page.ts +++ b/tests/sanity/tests/model/planning/planning-page.ts @@ -124,16 +124,15 @@ export class PlanningPage extends CalendarPage { } async dragToCalendar (title: string, column: number, time: string, addHalf: boolean = false): Promise { - await this.toDosContainer().getByRole('button', { name: title }).hover() - await expect(async () => { + await this.toDosContainer().getByRole('button', { name: title }).hover() await this.page.mouse.down() const boundingBox = await this.selectTimeCell(time, column).boundingBox() expect(boundingBox).toBeTruthy() if (boundingBox != null) { - await this.page.mouse.move(boundingBox.x + 10, boundingBox.y + 10) - await this.page.mouse.move(boundingBox.x + 10, boundingBox.y + (addHalf ? 40 : 20)) + await this.page.mouse.move(boundingBox.x + boundingBox.width / 2, boundingBox.y + (addHalf ? 40 : 20)) await this.page.mouse.up() + await expect(this.eventInSchedule(title)).toBeVisible({ timeout: 5000 }) } }).toPass(retryOptions) } diff --git a/tests/sanity/tests/tracker/layout.spec.ts b/tests/sanity/tests/tracker/layout.spec.ts index c8add228e5..242e656c76 100644 --- a/tests/sanity/tests/tracker/layout.spec.ts +++ b/tests/sanity/tests/tracker/layout.spec.ts @@ -107,7 +107,7 @@ test.describe('tracker layout tests', () => { // const orders = ['Status', 'Modified', 'Priority'] as const const orders = ['Modified', 'Priority'] as const const groups = ['Status', 'Assignee', 'Priority', 'Component', 'Milestone', 'No grouping'] as const - const groupsLabels: { [key in (typeof groups)[number]]?: string[] } = { + const groupsLabels: Partial> = { Status: DEFAULT_STATUSES, Assignee: [DEFAULT_USER, 'Chen Rosamund'], Priority: PRIORITIES, diff --git a/tests/sanity/tests/utils.ts b/tests/sanity/tests/utils.ts index 391d41d846..ef60993a48 100644 --- a/tests/sanity/tests/utils.ts +++ b/tests/sanity/tests/utils.ts @@ -33,7 +33,7 @@ export function generateTestData (): TestData { return { workspaceName: faker.lorem.word(), - userName: faker.internet.userName(), + userName: faker.internet.username(), firstName: faker.person.firstName(), lastName: faker.person.lastName(), channelName: generateWordStartingWithA() @@ -60,7 +60,7 @@ export function getNextHourTimeForPlanner (): string { // Consistent data export const workspaceName = faker.lorem.word() -export const userName = faker.internet.userName() +export const userName = faker.internet.username() export const firstName = faker.person.firstName() export const lastName = faker.person.lastName() export const channelName = faker.lorem.word() @@ -175,7 +175,7 @@ export function expectToContainsOrdered (val: Locator, text: string[], timeout?: return expect(val).toHaveText(origIssuesExp, { timeout }) } -export async function * iterateLocator (locator: Locator): AsyncGenerator { +export async function* iterateLocator (locator: Locator): AsyncGenerator { for (let index = 0; index < (await locator.count()); index++) { yield locator.nth(index) } diff --git a/ws-tests/api-tests/.eslintrc.js b/ws-tests/api-tests/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/ws-tests/api-tests/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/ws-tests/api-tests/eslint.config.mjs b/ws-tests/api-tests/eslint.config.mjs new file mode 100644 index 0000000000..524a79e33f --- /dev/null +++ b/ws-tests/api-tests/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/node/eslint.config.mjs' + +export default config diff --git a/ws-tests/api-tests/package.json b/ws-tests/api-tests/package.json index dbb71e2702..c33628ad40 100644 --- a/ws-tests/api-tests/package.json +++ b/ws-tests/api-tests/package.json @@ -21,24 +21,24 @@ "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", "@types/compression": "~1.7.2", - "@types/cors": "^2.8.12", + "@types/cors": "^2.8.19", "@types/express": "^4.17.13", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", "@types/ws": "^8.18.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.54.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "jest": "^29.7.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "@typescript-eslint/parser": "^8.67.0", + "eslint": "^9.39.5", + "eslint-plugin-n": "^18.3.0", + "eslint-plugin-promise": "^7.3.0", + "jest": "^30.4.2", "prettier": "^3.6.2", - "ts-jest": "^29.1.1", + "ts-jest": "^29.4.12", "typescript": "^5.9.3", "@types/body-parser": "~1.19.2", - "@types/morgan": "~1.9.9" + "@types/morgan": "~1.9.9", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "@hcengineering/analytics": "workspace:^0.7.19", diff --git a/ws-tests/sanity/.eslintrc.js b/ws-tests/sanity/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/ws-tests/sanity/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/ws-tests/sanity/eslint.config.mjs b/ws-tests/sanity/eslint.config.mjs new file mode 100644 index 0000000000..3f947867b4 --- /dev/null +++ b/ws-tests/sanity/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from '@hcengineering/platform-rig/profiles/default/eslint.config.mjs' + +export default config diff --git a/ws-tests/sanity/package.json b/ws-tests/sanity/package.json index c337f58353..e0bbbff739 100644 --- a/ws-tests/sanity/package.json +++ b/ws-tests/sanity/package.json @@ -31,22 +31,22 @@ }, "devDependencies": { "@hcengineering/platform-rig": "workspace:^0.7.21", - "@types/jest": "^29.5.5", + "@types/jest": "^30.0.0", "@types/node": "^24.13.3", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint-config-standard-with-typescript": "^40.0.0", + "@typescript-eslint/eslint-plugin": "^8.67.0", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-n": "^18.3.0", + "eslint": "^9.39.5", + "@typescript-eslint/parser": "^8.67.0", "prettier": "^3.6.2", "typescript": "^5.9.3", - "@playwright/test": "^1.48.2", - "allure-playwright": "^3.0.6", - "allure-js-commons": "^3.0.6", - "@faker-js/faker": "^8.4.1", - "@hcengineering/tests-sanity": "workspace:^0.7.0" + "@playwright/test": "^1.63.0", + "allure-playwright": "^3.12.1", + "allure-js-commons": "^3.12.1", + "@faker-js/faker": "^10.6.0", + "@hcengineering/tests-sanity": "workspace:^0.7.0", + "eslint-plugin-svelte": "^3.23.0", + "eslint-config-love": "^157.0.0" }, "dependencies": { "dotenv": "^16.4.5",